springboot 2.5.2 配置 log4j2, 默认配置文件: spring-boot-2.5.2.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml

依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter</artifactId>
  4. <!--排除默认的日志框架-->
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <!--log4j2-->
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-log4j2</artifactId>
  16. </dependency>

配置文件

resources 目录下放置 log4j2.xml 文件即可

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="OFF" monitorInterval="1800">
  3. <Properties>
  4. <property name="LOG_HOME">/app/logs/routerService</property>
  5. <property name="FILE_NAME">routerService</property>
  6. <property name="ERROR_FILE_NAME">error</property>
  7. <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
  8. <Property name="LOG_LEVEL_PATTERN">%5p</Property>
  9. <Property name="CONSOLE_LOG_DATEFORMAT_PATTERN">HH:mm:ss.SSS</Property>
  10. <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
  11. <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${sys:CONSOLE_LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{-}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
  12. <Property name="FILE_LOG_PATTERN">%d{${sys:LOG_DATEFORMAT_PATTERN}} ${sys:LOG_LEVEL_PATTERN} %pid - [%t][%file:%line] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
  13. </Properties>
  14. <Appenders>
  15. <!--控制台日志-->
  16. <Console name="Console" target="SYSTEM_OUT">
  17. <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/>
  18. </Console>
  19. <!--正常文件日志-->
  20. <RollingFile name="File" fileName="${LOG_HOME}/${FILE_NAME}.log"
  21. filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
  22. immediateFlush="true">
  23. <PatternLayout pattern="${sys:FILE_LOG_PATTERN}" charset="${sys:FILE_LOG_CHARSET}"/>
  24. <Policies>
  25. <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新-->
  26. <SizeBasedTriggeringPolicy size="200 MB"/>
  27. <!--设置日志文件滚动更新的时间,依赖于文件命名 filePattern 的设置-->
  28. <TimeBasedTriggeringPolicy/>
  29. </Policies>
  30. <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i-->
  31. <DefaultRolloverStrategy max="20"/>
  32. </RollingFile>
  33. <!--错误文件日志-->
  34. <RollingFile name="ErrorFile" fileName="${LOG_HOME}/${ERROR_FILE_NAME}.log"
  35. filePattern="${LOG_HOME}/$${date:yyyy-MM}/${ERROR_FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
  36. immediateFlush="true">
  37. <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
  38. <PatternLayout pattern="${sys:FILE_LOG_PATTERN}" charset="${sys:FILE_LOG_CHARSET}"/>
  39. <Policies>
  40. <TimeBasedTriggeringPolicy/>
  41. <SizeBasedTriggeringPolicy size="200 MB"/>
  42. </Policies>
  43. <DefaultRolloverStrategy max="20"/>
  44. </RollingFile>
  45. </Appenders>
  46. <Loggers>
  47. <Root level="debug">
  48. <AppenderRef ref="Console"/>
  49. <AppenderRef ref="File"/>
  50. <AppenderRef ref="ErrorFile"/>
  51. </Root>
  52. <logger name="org.springframework.core" level="info"/>
  53. <logger name="org.springframework.beans" level="info"/>
  54. <logger name="org.springframework.context" level="info"/>
  55. <logger name="org.springframework.web" level="info"/>
  56. <logger name="org.apache.http" level="warn"/>
  57. </Loggers>
  58. </Configuration>

spring 增强

推荐配置文件命名为 log4j2-spring.xml, spring boot 会添加一些 spring boot 特有的配置项

名词解释

%d{HH: mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger{36}——日志输出者的名字
%msg——日志消息
%n——平台的换行符