Springboot + log4j

pom
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-log4j2</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-web</artifactId>
  8. <version>2.1.6.RELEASE</version>
  9. <!-- 去掉springboot默认配置 -->
  10. <exclusions>
  11. <exclusion>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-logging</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependency>

application.yml
  1. logging:
  2. config: classpath:log4j2.xml

Test.java
  1. private final Logger logger = LogManager.getLogger(this.getClass());
  2. // public static final Logger LOGGER = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
  3. @GetMapping("/log")
  4. @ResponseBody
  5. public String logTest(){
  6. for(int i=0;i<10;i++){
  7. logger.info("info message");
  8. logger.warn("warn message");
  9. logger.error("error message");
  10. }
  11. return "My First SpringBoot Application";
  12. }

log4j2.xml
  1. <!-- log4j2.xml -->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <configuration status="warn">
  4. <Properties>
  5. <!-- 日志存储路径 -->
  6. <Property name="baseDir">./logs</Property>
  7. </Properties>
  8. <Appenders>
  9. <Console name="console" target="SYSTEM_OUT">
  10. <PatternLayout charset="UTF-8" pattern="[%-5p] [%d{HH:mm:ss}] %c - %m%n" />
  11. </Console>
  12. <!--Info级别日志输出-->
  13. <RollingFile name="system-info"
  14. fileName="${baseDir}/info.log"
  15. filePattern="${baseDir}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
  16. <Filters>
  17. <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
  18. <ThresholdFilter level="info"/>
  19. </Filters>
  20. <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" />
  21. <Policies>
  22. <!-- 归档每天的文件 -->
  23. <TimeBasedTriggeringPolicy interval="1" modulate="true" />
  24. <!-- 限制单个文件大小 -->
  25. <SizeBasedTriggeringPolicy size="10 MB" />
  26. </Policies>
  27. <!-- 限制每天文件个数 -->
  28. <DefaultRolloverStrategy compressionLevel="0" max="50"/>
  29. </RollingFile>
  30. <!-- WARN 级别日志输出-->
  31. <RollingFile name="system-warn"
  32. fileName="${baseDir}/warn.log" filePattern="${baseDir}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
  33. <Filters>
  34. <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
  35. <ThresholdFilter level="warn"/>
  36. </Filters>
  37. <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" />
  38. <Policies>
  39. <!-- 归档每天的文件 -->
  40. <TimeBasedTriggeringPolicy interval="1" modulate="true" />
  41. <!-- 限制单个文件大小 -->
  42. <SizeBasedTriggeringPolicy size="10 MB" />
  43. </Policies>
  44. <!-- 限制每天文件个数 -->
  45. <DefaultRolloverStrategy compressionLevel="0" max="50"/>
  46. </RollingFile>
  47. <!--Error级别日志输出-->
  48. <RollingFile name="system-error"
  49. fileName="${baseDir}/error.log" filePattern="${baseDir}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
  50. <Filters>
  51. <ThresholdFilter level="error"/>
  52. </Filters>
  53. <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" />
  54. <Policies>
  55. <!-- 归档每天的文件 -->
  56. <TimeBasedTriggeringPolicy interval="1" modulate="true" />
  57. <!-- 限制单个文件大小 -->
  58. <SizeBasedTriggeringPolicy size="10 MB" />
  59. </Policies>
  60. <!-- 限制每天文件个数 -->
  61. <DefaultRolloverStrategy compressionLevel="0" max="50"/>
  62. </RollingFile>
  63. </Appenders>
  64. <Loggers>
  65. <root level="INFO">
  66. <appender-ref ref="console" />
  67. <appender-ref ref="system-info" />
  68. <appender-ref ref="system-warn" />
  69. <appender-ref ref="system-error" />
  70. </root>
  71. </Loggers>
  72. </configuration>