logback控制台彩色日志输出

一、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,简化配置。

  • 12
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Logback 是一个 Java日志框架,可以用来控制日志输出。它支持多种日志级别,可以通过配置文件来控制日志输出方式。 Logback 的配置文件是一个 XML 文件,通常命名为 `logback.xml`。下面是一个简单的 Logback 配置文件的例子: ```xml <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> ``` 这个配置文件定义了一个名为 `STDOUT` 的输出器,它将日志输出控制台。`<encoder>` 元素定义了日志输出的格式,`%-5level` 表示日志级别,`%logger{35}` 表示日志记录器的名称,`%msg%n` 表示日志消息和换行符。 `<root>` 元素定义了日志的根级别,这里设置为 `debug`,表示输出所有级别的日志。`<appender-ref>` 元素将输出器 `STDOUT` 添加到根记录器中。 Logback 支持多种日志级别,从低到高分别是 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL。可以通过设置日志级别来控制日志输出。例如,如果只想输出 WARN 级别以上的日志,可以将根级别设置为 WARN: ```xml <root level="warn"> <appender-ref ref="STDOUT" /> </root> ``` 这样,INFO 和 DEBUG 级别的日志就不会被输出了。 除了根级别外,还可以为每个记录器单独设置日志级别。例如,可以将某个记录器的级别设置为 DEBUG,而其他记录器的级别设置为 INFO: ```xml <logger name="com.example" level="debug" /> ``` 这样,名为 `com.example` 的记录器就会输出 DEBUG 级别的日志Logback 还支持多种输出方式,例如文件、邮件等。可以通过配置文件来定义这些输出方式。详细的配置方法可以参考 Logback 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斗者_2013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值