springboot Slf4j+logback日志配置以及介绍

文章引用:https://blog.csdn.net/mu_wind/article/details/99830829

 #一:日志配置文件代码实现

 1 <?xml version='1.0' encoding='UTF-8'?>
 2 <!--日志配置-->
 3 <configuration>
 4     <!--直接定义属性-->
 5     <property name="logFile" value="log/myspringboot"/>
 6     <property name="maxFileSize" value="30MB"/>
 7 
 8     <!--使用控制台日志-->
 9     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
10         <encoder>
11             <pattern>%d [%thread] %-5level %logger{50} -[%file:%line]- %msg%n</pattern>
12             <charset>UTF-8</charset>
13         </encoder>
14     </appender>
15 
16     <!--文件日志,测试成功,不过不会在idea中显示出来。如果直接写个xxxFile.log:日志就会创建在项目根目录下边-->
17     <appender name="FILE" class="ch.qos.logback.core.FileAppender">
18         <file>log/testFile.log</file>
19         <append>true</append>
20         <encoder>
21             <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
22         </encoder>
23     </appender>
24 
25     <!--滚动文件日志-->
26     <appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
27         <file>${logFile}.log</file>
28 
29         <encoder>
30             <!--日志输出格式-->
31             <pattern>%d [%thread] %-5level -[%file:%line]- %msg%n</pattern>
32             <charset>UTF-8</charset>
33         </encoder>
34 
35         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
36             <fileNamePattern>${logFile}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
37             <maxFileSize>${maxFileSize}</maxFileSize>
38         </rollingPolicy>
39     </appender>
40 
41     <!--logger 的name: 指定具体哪个包使用哪种appender 日志输出。【是使用控制台日志输出?文件日志输出?滚动文件日志输出?】-->
42     <logger name="com.peinuo.educationSummary" level="info" additivity="true">
43         <!--可以有多个appender-ref,即将日志记录到不同的位置-->
44         <appender-ref ref="STDOUT"/>
45         <!--        <appender-ref ref="FILE"/>-->
46         <appender-ref ref="fileLog"/>
47         <!--     <appender-ref ref="fileLog"/>-->
48     </logger>
49 
50     <!--基础的日志输出-->
51     <root level="info">
52     </root>
53 </configuration>
View Code

 #二:配置文件解释

2.1:configuration

1 <configuration>是logback.xml这个xml文件的根节点,它包含以下属性。
2 
3 //scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
4 //scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
5 //debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
6 <configuration scan="true" scanPeriod="60 seconds" debug="false">  
7       <!-- 其他配置省略-->  
8 </configuration>  
View Code

2.2:property 和 springProperty

1 设置了一个名为logFile的变量,后续通过${logFile}的方式就引用到了其值logs/mutest。
2 <property name="logFile" value="logs/mutest"/>
3 
4 //springProperty要配合配置文件。设置了一个名为logFile的变量,但没有直接赋值,而是通过source指向了配置文件的路径,配置文件中是这样的
5 <springProperty name="logFile" source="log.file"/>
6 配置文件
7 
8 log:
9   file: logs/mutest
View Code

2.3: root

1 root节点,必选节点,用来指定最基础的日志输出级别并指定<appender>,可以理解为根logger
2 <root level="debug">
3   <appender-ref ref="console" />
4   <appender-ref ref="file" />
5 </root>
View Code

2.4:appender。负责格式化一个日志输出节点,也就是描述日志存储类型、位置、滚动规则等属性。有三种类型,分别是ConsoleAppender(控制台日志)、FileAppender(文件日志)、RollingFileAppender(滚动文件日志)。

 1 1:控制台日志《==》ConsoleAppender
 2 //name:appender节点的名称,在后文中被logger节点引用。一个logback配置文件中不能有重复的appender name。
 3 //class:使用何种日志输出策略,分别是ConsoleAppender(控制台日志)、FileAppender(文件日志)、RollingFileAppender(滚动文件日志)。
 4 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 5   <encoder>
 6         <pattern>%d [%thread] %-5level %logger{50} -[%file:%line]- %msg%n</pattern>
 7         <charset>UTF-8</charset>
 8     </encoder>
 9 </appender>
10 解释:
11     appender 有name和class两个属性:
12 
13     name:appender节点的名称,在后文中被logger节点引用。一个logback配置文件中不能有重复的appender name。
14     class:使用何种日志输出策略,分别是ConsoleAppender(控制台日志)、FileAppender(文件日志)、RollingFileAppender(滚动文件日志)。
15 
16 //2:文件日志 《==》 FileAppender
17 <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
18   <file>testFile.log</file> 
19   <append>true</append> 
20   <encoder> 
21     <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
22   </encoder>
23 </appender> 
24 
25 解释:
26     <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
27     <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
28     <encoder>:对记录事件进行格式化。(具体参数稍后讲解 )
29     <prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false30     <pattern>:日志的输出格式。
31     pattern定义了日志的输出格式,我们以<pattern>%d [%thread] %-5level -[%file:%line]- %msg%n</pattern>为例,分解开来:
32 
33     %date:表示日期
34     %thread:表示线程名
35     %-5level:表示级别从左显示 5 个字符宽度
36     %logger{50}:表示 Logger 名字最长 50 个字符
37     %msg:表示日志消息
38     %n:换行符
39 
40 //3:文件日志 《==》 RollingFileAppe
41 <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
42   <file>testFile.log</file> 
43   <append>true</append> 
44   <encoder> 
45     <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
46   </encoder>
47 </appender>
48 
49 解释:
50  RollingFileAppender节点下有一些常用的子节点:
51 
52     <rollingPolicy>:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。
53     <filter>:日志输出拦截器,可以自定义拦截器也可以用系统一些定义好的拦截器。
54     <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。
55     SizeAndTimeBasedRollingPolicy:根据日志文件大小和时间周期作为切分条件,满足其中任意一个就要做切分。maxFileSize的值决定了当天的日志文件大小上限,超过这个上限,同一天将会有多个日志文件,因此<fileNamePattern>${logFile}.%d{yyyy-MM-dd}.%i</fileNamePattern>中有一个%i,就是为应对同一天生成多个日志文件而写,在日志量很大的情况下,会出现mutest.log.2020-07-28.0.log、mutest.2020-07-28.1.log这种情况。
56     TimeBasedRollingPolicy:只以时间周期为切分条件,在这种策略下,存档日志名称格式设置为<fileNamePattern>${logFile}.%d{yyyy-MM-dd}.log</fileNamePattern>即可。
57     SizeBasedTriggeringPolicy:只以文件大小为切分条件,在这种策略下,<maxFileSize>日志滚动的唯一触发条件。
58 
59 <fileNamePattern>:必要节点。以${logFile}.%d{yyyy-MM-dd}.%i.log为例(mutest.2019-07-28.0.log),有这么几个部分:
60     ${logFile}:固定文件名称前缀,这里是引用了<property>中设置的变量。
61     %d{yyyy-MM}:指定日志名称中间日期的格式,如果只有%d,将默认使用yyyy-MM-dd格式。
62     %i:当日志量过大,导致同一天生成两个及以上日志文件时,这个属性将为日志名称加一个索引作为后缀,以加以区分。
63     .log.zip:指定存档日志文件的压缩格式。
View Code

2.5:logger

 1 logger节点,可选节点,作用是指明具体的包或类的日志输出级别
 2 <!-- name 属性表示匹配的logger类型前缀 -->  
 3 <logger name="com.mutest.demo">  
 4     <level value="INFO" />  
 5     <!-- 引用的appender,类似于spring的ref -->  
 6     <appender-ref ref="fileLog" />  
 7     <appender-ref ref="STDOUT" /> 
 8 </logger> 
 9 
10 name: 必写属性,指定具体包或类,被指定的包或类中的日志输出将遵从该logger规定配置。
View Code

#3更多知识

 

posted on 2021-12-06 17:06  夜空中闪闪发光的星星  阅读(195)  评论(0)    收藏  举报