logback.xml springboot 项目通用logback配置,粘贴即用,按日期生成

news2024/11/22 14:54:50
<configuration scan="false" scanPeriod="10 seconds">
    <!-- 定义日志存放的根目录 -->
    <property name="log.dir" value="./logs" />
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="console.encoder"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss}) %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%5.5t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

      <!--    属性声明:普通日志打印写log文件用-->
    <property name = "file.encoder" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"></property>
    <!--    控制台打印输出规则包含info error warn-->
    <appender name = "console" class = "ch.qos.logback.core.ConsoleAppender" level="info">
        <encoder>
            <pattern>${console.encoder}</pattern>
            <charset>UTF-8</charset>
        </encoder>

    </appender>
<!--    滚动策略 debug info error warn -->
    <appender name="debug-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--        文件名 目录结构为logs文件夹下 名字叫debug.log的日志文件-->
        <file>${log.dir}/debug.log</file>
        <encoder>
            <pattern>${file.encoder}</pattern>
            <charset>UTF-8</charset>
        </encoder>
<!--        滚动策略如果logs文件夹下的debug.log超过maxFileSize 就会保存到fileNamePattern目录 命名就在fileNamePattern内也就是 0,2,3这样-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
            <fileNamePattern>${log.dir}/debug/%d{yyyy-MM-dd}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10kb</maxFileSize>
<!--            最大保存体积超过自动删除老的日志文件让其始终保持最多5gb-->
            <totalSizeCap>5GB</totalSizeCap>
<!--            无论超不超5gb但凡超过60天就删-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
<!--        过滤只要debug类型的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--            级别-->
            <level>debug</level>
<!--            只要debug-->
            <onMatch>ACCEPT</onMatch>
<!--            其他的都不要-->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
<!--    与debug appender 一样不做过多解释-->
    <appender name="info-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/info.log</file>
        <encoder>
            <pattern>${file.encoder}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
            <fileNamePattern>${log.dir}/info/%d{yyyy-MM-dd}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10kb</maxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--    与debug appender 一样不做过多解释-->
    <appender name="warn-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/warn.log</file>
        <encoder>
            <pattern>${file.encoder}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
            <fileNamePattern>${log.dir}/warn/%d{yyyy-MM-dd}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--    与debug appender 一样不做过多解释-->
    <appender name="error-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.dir}/error.log</file>
        <encoder>
            <pattern>${file.encoder}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
            <fileNamePattern>${log.dir}/error/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
<!--    additivity标识不给root类 只给自定义的附加器-->
    <logger name="com.self.mapper" level="debug" additivity="false">
        <appender-ref ref="console" />
        <appender-ref ref="debug-file" />
    </logger>
    <!-- 打印事务、mapper注册等信息,打印到控制台、记录到debug_file additivity标识不给root类 只给自定义的附加器-->
    <logger name="org.mybatis.spring.SqlSessionUtils" level="DEBUG"  additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="debug-file"/>
    </logger>
<!--    root标识log父类 包含了所有类型日志这里的作用是把日志给哪些附加器授权用-->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="debug-file"/>
        <appender-ref ref="info-file"/>
        <appender-ref ref="warn-file"/>
        <appender-ref ref="error-file"/>
    </root>

</configuration>

生成日志如下:

目录 :按照日志类型-日期

文件命名:-类型+日期+索引+.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1050478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

求职面试,如何赢得面试官的满意赞许?

在面试的时候&#xff0c;我们会遇到很多突发事件&#xff0c;这些事件让我们不能很好地将面试进行下去。那么&#xff0c;在出现事情的时候&#xff0c;我们应该如何让面试官满意&#xff1f; 1、选择得体的服装 在面试的时候&#xff0c;想要面试官更好地选择自己&#x…

后端基础php

虚拟机安装网络方面名词介绍快速自建web环境&#xff08;phpstudy&#xff09;前端基础mysql语法前端【展示】----后端【功能实现】标准php 【ASP / ASPX / PHP / JSP】0基础 --->php入门编程--->代码 对逻辑要求高变量--->会改变的量 php---->$aHello…

C理解(二):指针,数组,字符串,函数

指针 int *p; 未绑定:*表示p为指针变量,占4字节 int a 1;p &a; 绑定:p与a地址绑定即p中存放a的地址 *p *p 1; 解引用:p间接访问a的存储空间 左值与右值 int a 1; 左值&#xff1a;变量对应的内存空间 右值&#xff1a;内存空间存储的数 野指针 野指针:指针变量定…

2023下半年信息系统集成设计师

选择题 第一章 信息基础知识第二章 信息系统集成第三章 专业技能知识第四章 项目管理一般知识第五章 项目立项管理第六章 项目整体管理第七章 项目范围管理第八章 项目进度管理第九章 项目成本管理第十章 项目质量管理第十一章 项目管理干系人第十三章 合同管理第十五章 配置管…

秋招应届毕业生求职 如何通过在线测评?

对于应届毕业生来说&#xff0c;求职应聘必定会遇到在线测评的环节&#xff0c;很多同学都会疑惑&#xff0c;不知道怎么应对&#xff0c;也有些同学说我已经很认真了&#xff0c;为何我别刷了下来&#xff1f; 这里面到底有何玄机&#xff1f; 1、应聘前要多做性格测试 …

Django模板加载与响应

前言 Django 的模板系统将 Python 代码与 HTML 代码解耦&#xff0c;动态地生成 HTML 页面。Django 项目可以配置一个或多个模板引擎&#xff0c;但是通常使用 Django 的模板系统时&#xff0c;应该首先考虑其内置的后端 DTL&#xff08;Django Template Language&#xff0c;D…

【Java】复制数组的四种方式

1. System.arraycopy() 用来将一个数组的&#xff08;一部分&#xff09;内容复制到另一个数组里面去。 定义&#xff1a; void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);例&#xff1a; int[] arr1 { 1, 2, 3, 4, 5 }; int[] arr2 new…

青藏高原1-km分辨率生态环境质量变化数据集(2000-2020)

青藏高原平均海拔4000米以上&#xff0c;人口1300万&#xff0c;是亚洲九大河流的源头&#xff0c;为超过15亿人口提供淡水、食物和其他生态系统服务&#xff0c;被誉为地球第三极和亚洲水塔。然而&#xff0c;在该地区的人与自然的关系的研究是有限的&#xff0c;尤其是在精细…

1500*C. Kefa and Park(dfstree)

Kefa and Park - 洛谷 Problem - 580C - Codeforces Examples input 4 1 1 1 0 0 1 2 1 3 1 4 output 2 input 7 1 1 0 1 1 0 0 0 1 2 1 3 2 4 2 5 3 6 3 7 output 2 解析&#xff1a; dfs遍历&#xff0c;记录前一个结点权值是否为1&#xff0c;并且累计路径1的个数…

MySQL学习笔记23

逻辑备份&#xff1a; 1、回顾什么是逻辑备份&#xff1f; 逻辑备份就是把数据库、数据表或者数据进行导出&#xff0c;导出到一个文本文件中。 2、逻辑备份工具&#xff1a; mysqldump&#xff1a;提供全库级、数据库级别以及表级别的数据备份。 mysqldumpbinlog&#xff…

1200*A. Flipping Game(前缀和)

解析&#xff1a; 100数据量&#xff0c;两层遍历每个区间&#xff0c;然后前缀和计算1的个数&#xff0c;维护最大值即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N110; int n,a[N],res,sum[N]; signed main(){scanf("%ll…

[Linux调查局] 编译过程

编译过程 引子编译阶段预处理汇编编译链接 链接详解release && debug 引子 一个程序的编译分为4个部分: 预处理 头文件的展开条件编译宏的展开去掉注释 编译 生成汇编汇编 生成计算机认识的机器指令, 即二进制文件链接 将程序和 库 链接 &#x1f5e8;️这里有一个疑…

《Reinforcement Learning: An Introduction》第8章笔记

文章目录 Chapter 8 Planning and Learning with Tabular Methods8.1 Models and Planning8.2 Dyna: Integrated Planning, Acting, and Learning8.3 When the Models Is Wrong8.4 Prioritized Sweeping8.5 Expected vs. Sample Updates8.6 Trajectory Sampling8.7 Real-time D…

南京大学【软件分析】13 Static Analysis for Security

文章目录 1. Information Flow Security2. Confidentiality and Integrity3. Explicit Flows and Covert/Hidden Channels4. Taint Analysis污点分析案例 1. Information Flow Security 引起安全问题最主要的两大原因是&#xff1a;injection errors&#xff08;2013-2019排名…

Disucz插件-免费最全Disucz插件大全

在网络世界里&#xff0c;拥有一个活跃并充满吸引力的社区论坛是许多网站管理员和品牌经营者的梦想。然而&#xff0c;要让一个论坛充满活力、吸引大量用户&#xff0c;需要大量的内容。这就是为什么许多人转向Disucz插件的原因。Disucz插件不仅可以帮助您创建一个互动性强大的…

数据响应式原理

面试题&#xff1a;请阐述vue2响应式原理 vue官方阐述&#xff1a;https://cn.vuejs.org/v2/guide/reactivity.html 响应式数据的最终目标&#xff0c;是当对象本身或对象属性发生变化时&#xff0c;将会运行一些函数&#xff0c;最常见的就是render函数。 在具体实现上&#x…

基于SpringBoot的飘香水果购物网站

目录 前言 一、技术栈 二、系统功能介绍 水果信息管理 减积分管理 会员购买订单管理 首页 水果 购买水果订单管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网购物的飞速发展&#xff0c;一般企业都去创建属于自己的电商平台以及购物…

crypto:大帝的密码武器

题目 下载zip之后可得到提示文本 结合题目名和文本提示可知&#xff0c;为凯撒密码 利用脚本&#xff0c;爆破位移的位数 str1 FRPHEVGL str2 str1.lower() num 1 for i in range(26):print("{:<2d}".format(num),end )for j in str2:if(ord(j)num > or…

【QT开发(6)】0926-QT 中加入 fastDDS 通信库的程序使用说明

在智能驾驶中&#xff0c;DDS有可能被广泛使用&#xff0c;因此推出这篇说明教程。 1、基于【QT开发&#xff08;5&#xff09;】教程的项目文档进行开发 2、安装DDS 查看《【eProsima Fast DDS&#xff08;1&#xff09;】安装eProsima Fast DDS》 至少安装: foonathan_m…

idea Springboot 高校科研资源共享系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 高校科研资源共享系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c; 系统具有完整的源代码和数据…