一、logback控制台常规日志输出
1、常规配置
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 输出模板 --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
2、控制台常规日志输出
控制台常规日志输出,朴朴素素平淡无奇,各level级别的日志不能直观的区分开:
二、logback控制台彩色日志输出
1、彩色配置
在spring boot下可以通过引用org/springframework/boot/logging/logback/defaults.xml文件中,配置的默认控制台日志输出模板CONSOLE_LOG_PATTERN。
里面默认采用的就是彩色日志输出。
<configuration> <!-- 引入spirng boot默认的logback配置文件 --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 采用Spring boot中默认的控制台彩色日志输出模板 --> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
2、控制台彩色日志输出
各级别的日志通过不同的色彩清晰的标注出来,看起来更直观舒服。
当然,也可以自定义控制台彩色输出模板。
<configuration> <!-- 也可以自定义控制台输出模板 --> <property name="CONSOLE_LOG_PATTERN" value="${%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 引用自定义输出模板 --> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
三、彩色日志输出开关
在spring boot中,我们还可以通过属性配置控制是否启用彩色日志输出。
application.properties中设置:
# 检查终端是否支持ANSI,是的话就采用彩色输出 spring.output.ansi.enabled=detect
说明:
spring boot项目中spring.output.ansi.enabled属性的默认值为detect,能满足大多数场景,不推荐修改为其他值。
注意⚠️:
经测试,在idea中启动spring boot的工程,会默认在启动参数中添加-Dspring.output.ansi.enabled=always,强制启用彩色输出。
导致无论是在application.properties中、还是在VM options中重新指定的spring.output.ansi.enabled参数始终无效。
spring.output.ansi.enabled参数可选值介绍:
public static enum Enabled { DETECT, ALWAYS, NEVER; private Enabled() { } }
DETECT 检查终端是否支持ANSI,是的话就采用彩色输出
ALWAYS 不检查,总是彩色输出
NEVER 禁用彩色输出
四、严禁日志文件中采用彩色日志输出
<configuration> <!-- 引入spirng boot默认的logback配置文件 --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>testFile.log</file> <append>true</append> <immediateFlush>true</immediateFlush> <encoder> <!-- 严禁FileAppender采用彩色日志输出 --> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="FILE" /> </root> </configuration>
生成的日志文件中的内容:
用于颜色渲染的内容全部变成了乱码字符,严重影响了日志内容的查看,也增加了日志输出的压力。
五、解读spring boot和logback集成
在org.springframework.boot.logging.logback目录下,集成了logback的默认配置相关文件。
这里重点对4个xml配置文件进行介绍:
base.xml 基础配置模板
defaults.xml 默认配置属性
file-appender.xml RollingFileAppender模板
console-appender.xml ConsoleAppender模板
4个文件都是included文件,即被引用文件,单独是不会起作用的。
可以在项目中的logback.xml的配置文件中通过include标签根据需要去引用。
base.xml 内容如下:
<included> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <include resource="org/springframework/boot/logging/logback/file-appender.xml" /> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </included>
file-appender.xml文件内容:
<included> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <file>${LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <cleanHistoryOnStart>${LOG_FILE_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart> <fileNamePattern>${ROLLING_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern> <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize> <maxHistory>${LOG_FILE_MAX_HISTORY:-7}</maxHistory> <totalSizeCap>${LOG_FILE_TOTAL_SIZE_CAP:-0}</totalSizeCap> </rollingPolicy> </appender> </included>
总结
1、介绍了如何使用logback在控制台输出彩色日志。
2、严禁将彩色日志输出到日志文件中。
3、可以根据需要引用spring boot中logback的引用文件defaults.xml,console-appender.xml,简化配置。