SpringBoot中,默认使用slf4j + logback方式进行日志输出,并且引入了commons-logging,jul,log4j的适配包,将其他第三方框架的日志替换为slf4j作为日志门面,然后引入logback作为日志实现,这样就能统一使用slf4j(日志门面) + logback(日志实现)
logback.xmllogback组件${pattern} ${logHome}logback.log ${pattern} warn ACCEPT ${pattern} ${logHome}roll_logback.log ${logHome}%d{yyyy-MM-dd}/info.log%i.gz 100KB 3 false
-
property 定义属性相关,方便其他标签引用
-
appender 定义具体的日志输出appender,类似于JUL的handler,logback也提供了ConsoleAppender和FileAppender
-
encoder 指定当前appender输出时的格式
-
filter 可在appender中配置filter,设置日志过滤,比如可根据日志级别进行过滤
-
root root标签是指定rootLogger的配置,level指定rootLogger的默认运行级别,通过append-ref来指定rootLogger拥有的appender。然后其他的创建的logger都会继承rootLogger的配置。
-
logger 为某个包单独设置级别或者appender,如需要查看mapper包打印的sql,则可以将mapper调整为debug级别
-
additive 通常使用在logger中,如果我们为某个包单独指定了配置,而这个包的配置又会继承rootlogger的配置,所以可能会造成这个包下的日志会有重复打印。使用additive = false,表示不继承上级日志配置,去掉重复的日志打印。
需求:使用控制台和滚动日志追加器来实现info级别日志输出, 滚动日志追加器需要进行归档,每天一个文件夹,且超过100KB自动压缩, debug。warn。info要分文件夹,如 2021-11-18/debug/xxx.log, 2021-11-18/warn/xxx.log,2021-11-18/info/xxx.log.同时mapper包下的日志使用trace级别,不继承rootLogger配置,只使用控制台输出。
${pattern} ${pattern} ${logHome}system-error.log ${logHome}%d{yyyy-MM-dd}/error/error.log%i.gz ${size} 3 error ACCEPT DENY ${pattern} ${logHome}system-warn.log ${logHome}%d{yyyy-MM-dd}/warn/warn.log%i.gz ${size} 3 warn ACCEPT DENY ${pattern} ${logHome}system-info.log ${logHome}%d{yyyy-MM-dd}/info/info.log%i.gz ${size} 3 info ACCEPT DENY false



