【Spring】 Spring Boot logback
以spring boot mvc 自带logback 为例
see more: https://www.cnblogs.com/wenbronk/p/6529161.html
对log中对方法有详细介绍: https://www.cnblogs.com/mingforyou/p/4246298.html
spring boot 自封装 logback https://www.jianshu.com/p/2e2466045406
高级用法 https://www.cnblogs.com/softidea/p/5642174.html
与spring boot 结合的典范 https://www.cnblogs.com/zhangjianbing/p/8992897.html
1、自定义输出格式
.properties 文件中不加自定义格式串中不加""
# %ex{full} 是输出异常 ,如果自定义中写了,ide 控制台就不会再打印异常 ,怎么说了,如浴春风,终于可以控制控制态的异常输出了
# %15.15 表示 右对齐,多了截取,少了填充
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss:SSS} %magenta(${PID:- } ---) [%15.15thread] %clr(%-5level) %cyan(%-35logger{35}) : %msg %ex{full} %n"
2、lombok 注解@Slf4j 使用占位符格式化
log.error("hello {} {}","world","!");
3、自定义配置
Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置,所有配置文件名可以是logback-spring.xml,路径放置在与默认 spring boot .yaml 或.properties 文件同级即可,当然也可以在springboot配置文件中进行完全控制。以下是配置示例,有几个节点需要注意
- 1、<root> 节点下 <appender-ref ref="FILE"/> 如果不写 ,也会生产log文件,只不过为空。要是<root> 为空,则控制台和log文件什么也不会输出
- 2、定义格式化的输出字符串可用的有两个节点< encoder > 和 < layout > ,encoder 再layout之后版本新加的,作用有两个,一是把事件也就是info,error...转换为byte数组,二是可以同时将字节输出文件。而layout不能将字符串输出文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/Users/nidazhong/projects/IdeaProjects/readinglist" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="com.xxx.aggregator" level="info" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</logger>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
</root>
</configuration>
4、日志以文件形式保存
如果在logback.xml中以定义,则无需在springboot的配置文件中定义,这只是在一些不需要复杂的日志配置的时候使用
logging:
file: mylog.log
path: /Users/nidazhong/projects/IdeaProjects/readinglist/
5、颜色输出
# spring boot 自带颜色转换 使用%clr(xxx)
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
“年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。”
by. 马尔克斯