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>
#二:配置文件解释

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>
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
2.3: root
1 root节点,必选节点,用来指定最基础的日志输出级别并指定<appender>,可以理解为根logger 2 <root level="debug"> 3 <appender-ref ref="console" /> 4 <appender-ref ref="file" /> 5 </root>
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也在向此文件做写入操作,效率低,默认是 false。 30 <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:指定存档日志文件的压缩格式。
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规定配置。
#3更多知识
posted on 2021-12-06 17:06 夜空中闪闪发光的星星 阅读(195) 评论(0) 收藏 举报
浙公网安备 33010602011771号