SpringBoot之日志配置
springboot日志配置文档介绍:
官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
国内大神翻译的中文文档:https://blog.csdn.net/Quincuntial/column/info/13024
常用属性说明:
文档上有很多的说明,这里简单说一些比较常用的重要属性:
1 默认是使用的LogBack作为日志模块,但是底层也是支持提供了对Java Util Logging,Log4J2和Logback的默认实现。在每个logger中都预先配置使用控制台作为输出,同时也可用可选的文件输出。
2 Springboot支持在application.properties设置日志相关信息,也支持自定义一个xml来配置日志信息。前者在进行文件输出的时候无法做到按天生产配置文件。可以用过自定义xml文件俩实现。
3 springboot默认会读取resource下面的一些命名规范的日志配置文件,因此只要符合命名规范就不需要添加额外的配置。例如: logback-spring.xml, logback-spring.groovy, logback.xml ,logback.groovy
一个简单的日志配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!--输出error信息日志到文件当中-->
<appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>
[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %green([%logger{10}]) [%line] - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
<fileNamePattern>logs/fastboot-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--只输出error级别的信息到文件当中-->
</filter>
<prudent>true</prudent>
</appender>
<!--输出warn信息日志到文件当中-->
<appender name="warn_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>
%green[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %blue([%logger{10}]) [%line] - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
<fileNamePattern>logs/fastboot-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录WARN级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<prudent>true</prudent>
</appender>
<!--输出info信息日志到文件当中-->
<appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>
%green[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %blue([%logger{10}]) [%line] - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
<fileNamePattern>logs/fastboot-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录WARN级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<prudent>true</prudent>
</appender>
<!--输出debug信息日志到文件当中-->
<appender name="debug_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>
%green[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %blue([%logger{10}]) [%line] - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
<fileNamePattern>logs/fastboot-DEBUG-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录WARN级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<prudent>true</prudent>
</appender>
<!--输出日志到控制台当中-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %green([%logger{10}]) [%line] - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!--生产环境记录所有信息到日志文件当中-->
<springProfile name="prod">
<root level="DEBUG">
<appender-ref ref="error_file"/>
<appender-ref ref="warn_file"/>
<appender-ref ref="info_file"/>
<appender-ref ref="debug_file"/>
</root>
</springProfile>
<!--开发环境只需要展示在控制台-->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="console"/>
</root>
</springProfile>
<!--将本项目的代码sql日志输出到日志文件当中 -->
<logger name="cn.hjljy.fastboot.mapper" additivity="false" level="debug">
<appender-ref ref="console"/>
</logger>
</configuration>
该配置可以直接使用,只需要将最后的logger name属性修改一下就可以了
日志控制台颜色的处理:
[%-5level] %red([%date{yyyy-MM-dd HH:mm:ss}]) %green([%logger{10}]) [%line] - %msg%n
如上所示使用 %red() 就可以将括号里面的日志显示为红色了。
推荐一些非常详细的日志配置文章:
文章1: https://juejin.im/post/58f86981b123db0062363203
文章2 :https://www.cnblogs.com/zhangzhen894095789/p/6640808.html
我的个人博客:海加尔金鹰的个人博客