首页 > 其他分享 >logback控制台彩色日志输出

logback控制台彩色日志输出

时间:2022-12-07 17:39:51浏览次数:31  
标签:xml 输出 LOG 彩色 控制台 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控制台彩色日志输出_spring boot

二、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、控制台彩色日志输出

各级别的日志通过不同的色彩清晰的标注出来,看起来更直观舒服。

logback控制台彩色日志输出_spring boot_02

当然,也可以自定义控制台彩色输出模板。

<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>

生成的日志文件中的内容:

logback控制台彩色日志输出_spring_03


用于颜色渲染的内容全部变成了乱码字符,严重影响了日志内容的查看,也增加了日志输出的压力。

五、解读spring boot和logback集成

在org.springframework.boot.logging.logback目录下,集成了logback的默认配置相关文件。

logback控制台彩色日志输出_java_04


这里重点对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,简化配置。


标签:xml,输出,LOG,彩色,控制台,logback,日志
From: https://blog.51cto.com/u_15905482/5919825

相关文章

  • logback性能优化详解
    前言不正确的日志打印不但会降低程序运行性能,还会占用大量IO资源和硬盘存储空间。本文主要总结一些能提高日志打印性能的手段。一、通过AsyncAppender异步输出日志我们通常......
  • logback异步输出日志详解
    前言logback应该是目前最流行的日志打印框架了,毕竟SpringBoot中默认的集成的日志框架也是logback。在实际项目开发过程中,常常会遇到由于打印大量日志而导致程序并发降低,QPS......
  • Kafka 日志保留策略(Log Retention Policy)
    Kafka日志保留策略(LogRetentionPolicy)前言一两周前测试kafka,创建了topic:data-time,发布了一部分数据,测试kafka的发布和订阅均正常。一两周后,也就是现在,再次取订阅to......
  • 调试临时日志输出
    一、非控制台程序也可使用控制台输出1、AllocConsole为当前进程分配一个控制台2、在程序中调用printf, cout等函数即可3、FreeConsole不使用时调用释放控制台 如下: intW......
  • Python 日志记录-loguru
    Python日志记录-loguru使用logging模块时用python写代码时,logging模块最基本的几行配置,如下:importlogginglogging.basicConfig(level=logging.INFO,format='%(ascti......
  • java 引入logging日志
    1、yml添加 #日志配置logging:level:#自己的包名com.wrblog:debugorg.springframework:warn 2、在resources下创建logback.xml文件并更改自己的......
  • 日志架构选型
    ......
  • 解决Webstorm Nodejs console.log("这是中文") 控制台乱码
    设置文件编码自定义vm选项文件添加文件最后一行添加-Dfile.encoding=UTF-83.修改注册表Windows+R-->regedit-->计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsof......
  • 014.MyBatis日志管理
    1.SLF4j与Logback  2.Logback的使用2.1pom.xml<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</......
  • jsonSchema进行日志格式校验
    jsonSchema官网功能1、属性校验2、属性类型校验3、属性值校验fromjsonschemaimportvalidate,draft7_format_checkerfromjsonschema.exceptionsimportSchemaE......