需要引入 log4j 的依赖支持,推荐自己确定使用的版本。
org.apache.logging.log4j log4j-to-slf4j2.11.2
springboot 默认自己内部添加了对日志的支持,需要将其全部剔除掉,不然会影响 log4j 的依赖使用。
org.springframework.boot spring-boot-starter-logging* *
根据自己的需求进行相关的配置,这里需要注意的是使用 xml 文件进行配置,使用 properties 有坑没爬起来,文件名自定义,没有啥要求,都会在配置文件中进行指定的。
beordie info ${CONSOLE_LOG_PATTERN} UTF-8 ${path}/debug.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log}/debug/log-debug-%d{yyyy-MM-dd}.%i.log 100MB 15 debug ACCEPT DENY ${log}/info.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log}/info/log-info-%d{yyyy-MM-dd}.%i.log 100MB 15 info ACCEPT DENY ${log}/warn.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log}/warn/log-warn-%d{yyyy-MM-dd}.%i.log 100MB 15 warn ACCEPT DENY ${log}/error.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log}/error/log-error-%d{yyyy-MM-dd}.%i.log 100MB 15 ERROR ACCEPT DENY
还需要在 spring boot 的项目配置文件中进行配置的指定。
logging: config: classpath:log4j.xml
到这里完成对日志的整体配置,启动项目通过下面语句拿到日志对象即可进行日志的打印输出。
private final Logger LOGGING = LoggerFactory.getLogger(ArticleController.class);
日志模式-同步/异步
log4j2提供了AsyncAppender和AsyncLogger以及全局异步,开启方式如下:
日志模式使用注意事项:
日志滚动和清除策略
log4j2提供了基于文件大小的滚动策略和基于时间的滚动策略,也可以二者并用,这里给出基于大小的滚动策略配置和基于大小/时间双滚动策略配置: