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

logback控制台彩色日志输出相关推荐

  1. Java库:Jansi - 彩色日志输出体验

    Java库:Jansi - 彩色日志输出体验 环境:JDK8.springboot 依赖库:Jansi Jansi简介:Jansi是一个小型 Java 库,它允许您使用ANSI 转义码来格式化您的控制 ...

  2. logback过滤部分日志输出

    场景 使用监控异常日志进行告警时,部分异常日志可能只是不需要告警,但无法通过编码去除时,可以通过不输出这类异常日志达到忽略告警的目的. 比如在系统中经常会出现断开的管道的相关问题,异常如下 org.a ...

  3. VS2017控制台工程日志输出到log文件的同时输出到屏幕

    第一步: 在windows 10下使用tee指令 tee为Linux指令,tee把日志输出到log的同时输出到屏幕. 在http://sourceforge.net/projects/unxutils ...

  4. slf4j+log4j打印日志,控制台无日志输出

    slf4j+log4j 实现日志打印 项目场景: 今天看以前的项目,运行起来报错,项目日志对于项目是很重要的,但是控制台没有打印出来日志,运行起来报错的问题先放一放,先把日志的问题解决了,我项目中有l ...

  5. logback 日志打印,彩色日志

    一.logback控制台常规日志输出 常规配置 <configuration><appender name="STDOUT" class="ch.qos ...

  6. logback无法生成日志文件之谜

    前言 spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback 使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例 ...

  7. 【springboot基础】配置日志输出级别以及输出位置

    1.配置application.yml logging:config: classpath:spring-logback.xmllevel:root: error 2.配置spring-logback ...

  8. spring boot日志配置文件(彩色日志)logback-spring.xml

    文章目录 前言 ✨彩色日志 ✨输出到控制台 ✨输出到文件 1.输出所有日志 2.输出错误日志 ✨配置不同环境下的日志级别 ✨完整的logback-spring.xml文件配置 ✨文件下载 前言 spr ...

  9. springboot2.彩色日志配置(自用配置ok)

    springboot 会自动识别识别logback.xml <?xml version="1.0" encoding="UTF-8"?> <c ...

  10. 实现Log4j和Logback的统一日志封装与动态日志级别调整

    一.背景 项目中使用日志的地方非常广泛, 如果要做统一的处理,比如调整格式, 增加信息打印, 要修改很多地方,难以维护,所以需要能够将日志做一个统一的封装, 便于扩展使用:同时想做到动态调整日志级别, ...

最新文章

  1. 11g中AWR新快照视图
  2. html属性应用实例,HTML5 contenteditable属性使用示例
  3. vue input file onchange_vue常用指令汇总
  4. [学习笔记] 单位根反演
  5. Servlet - 会话跟踪
  6. C++ :类占用空间计算方式
  7. 在win10中使用任务计划程序_设置定时任务---Windows使用技巧工作笔记001
  8. 如何让百度云里的资源不被和谐掉?
  9. 应用随机过程概率模型导论(9th 英文版) Sheldon M.Ross 共享
  10. RT-THREAD + HC32F460 + AIR724 + ALIIOT
  11. 从代码角度看CAN网络层协议 ISO 15765-2(一)
  12. On Robust Capon Beamforming and Diagonal Loading
  13. 流年依旧,只是散了曾经
  14. 深度学习框架tensorflow学习与应用——代码笔记11(未完成)
  15. 【渝粤题库】广东开放大学 企业文化学 形成性考核
  16. 关于单片机的C语言编程基础知识(初学注意)
  17. Mybatis 源码分析(一)
  18. linux怎样通过手机上网,Linux系统通过手机GPRS上网的设置教程
  19. thingsboard 编译成功了,总结一下
  20. 如何推广微信公众号 微信公众号推广技巧

热门文章

  1. 详解什么是运营商大数据?
  2. Mujoco Simulate例子笔记
  3. mysql嵌套select limit_MySQL嵌套查询“LIMIT IN/ALL/ANY/SOME”错误解决方法
  4. 持续集成、持续交付、微服务----微服务
  5. WebRTC基本概念
  6. html中字体 楷体_HTML+CSS入门 CSS设置中文字体(font-family:黑体)后样式失效问题如何解决...
  7. vb2008 获取u盘id_【干货】纯 windows 系统绕苹果ID解锁,傻瓜式的教程
  8. DELMIA软件:机器人与行走轴联动实现长焊缝弧焊焊接虚拟仿真
  9. ATMEGA128定时器1的使用
  10. 工业机器人的臂部配置形式_工业机器人臂部设计注意事项