SpringBoot开发中如何选用日志框架呢? 出于性能等原因,Logback 目前是springboot应用日志的标配; 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式。
在学习这块时需要一些日志框架的发展和基础,同时了解日志配置时考虑的因素。
Java日志库是最能体现Java库在进化中的渊源关系的,在理解时重点理解日志框架本身和日志门面,以及比较好的实践等。要关注其历史渊源和设计(比如桥接),而具体在使用时查询接口即可, 否则会陷入JUL(Java Util Log), JCL(Commons Logging), Log4j, SLF4J, Logback,Log4j2傻傻分不清楚的境地。
在配置日志时需要考虑哪些因素?
支持日志路径,日志level等配置
日志控制配置通过application.yml下发
按天生成日志,当天的日志>50MB回滚
最多保存10天日志
生成的日志中Pattern自定义
Pattern中添加用户自定义的MDC字段,比如用户信息(当前日志是由哪个用户的请求产生),request信息。此种方式可以通过AOP切面控制,在MDC中添加requestID,在spring-logback.xml中配置Pattern。
根据不同的运行环境设置Profile - dev,test,product
对控制台,Err和全量日志分别配置
对第三方包路径日志控制
如下两个例子基本包含了上述的考虑点:
application.yml
logging:level:root: debugpath: C:/data/logs/springboot-logback-demo
server:port: 8080
spring:application:name: springboot-logback-demo
debug: false
Spring-logback.xml
%msg|%n "/>${LOG_MSG} ${LOG_HOME}/all_${LOG_PREFIX}.log ${LOG_DIR}/all_${LOG_PREFIX}%i.log ${MAX_HISTORY} ${MAX_FILE_SIZE} ${LOG_MSG} ERROR DENY ACCEPT ${LOG_HOME}/err_${LOG_PREFIX}.log ${LOG_DIR}/err_${LOG_PREFIX}%i.log ${MAX_HISTORY} ${MAX_FILE_SIZE} ${LOG_MSG}
Profile 相关的配置可以参考:
logs/springboot-logback-demo.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n
https://www.cnblogs.com/warking/p/5710303.html
https://download.csdn.net/download/DeveloperFire/87519876