logback-spring.xml 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds">
  3. <!-- 日志目录,可通过 logging.file.path 或环境变量 LOG_PATH 覆盖 -->
  4. <springProperty scope="context" name="LOG_PATH" source="logging.file.path" defaultValue="logs"/>
  5. <!-- 单文件大小上限,建议 200MB~500MB -->
  6. <springProperty scope="context" name="MAX_FILE_SIZE" source="logging.logback.rollingpolicy.max-file-size" defaultValue="300MB"/>
  7. <!-- 保留天数 -->
  8. <springProperty scope="context" name="MAX_HISTORY" source="logging.logback.rollingpolicy.max-history" defaultValue="60"/>
  9. <!-- 所有归档日志总大小上限 -->
  10. <springProperty scope="context" name="TOTAL_SIZE_CAP" source="logging.logback.rollingpolicy.total-size-cap" defaultValue="20GB"/>
  11. <property name="APP_NAME" value="fs-admin"/>
  12. <property name="LOG_CHARSET" value="UTF-8"/>
  13. <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
  14. <!-- 控制台(UTF-8,配合 -Dfile.encoding=UTF-8 与 LANG=zh_CN.UTF-8) -->
  15. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  16. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  17. <pattern>${LOG_PATTERN}</pattern>
  18. <charset>${LOG_CHARSET}</charset>
  19. <immediateFlush>true</immediateFlush>
  20. </encoder>
  21. </appender>
  22. <!--
  23. 按「日期 + 大小」滚动,归档为 UTF-8 文本再 gzip:
  24. - 每天凌晨跨日自动切割(fileNamePattern 含 yyyy-MM-dd)
  25. - 单文件超过 MAX_FILE_SIZE 时在同一天内继续切割(.%i)
  26. -->
  27. <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
  28. <file>${LOG_PATH}/${APP_NAME}.log</file>
  29. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  30. <pattern>${LOG_PATTERN}</pattern>
  31. <charset>${LOG_CHARSET}</charset>
  32. <immediateFlush>true</immediateFlush>
  33. </encoder>
  34. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  35. <fileNamePattern>${LOG_PATH}/archive/${APP_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
  36. <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
  37. <maxHistory>${MAX_HISTORY}</maxHistory>
  38. <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
  39. <cleanHistoryOnStart>false</cleanHistoryOnStart>
  40. </rollingPolicy>
  41. </appender>
  42. <!-- ERROR 单独归档(UTF-8) -->
  43. <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
  44. <file>${LOG_PATH}/${APP_NAME}-error.log</file>
  45. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  46. <pattern>${LOG_PATTERN}</pattern>
  47. <charset>${LOG_CHARSET}</charset>
  48. <immediateFlush>true</immediateFlush>
  49. </encoder>
  50. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  51. <level>ERROR</level>
  52. <onMatch>ACCEPT</onMatch>
  53. <onMismatch>DENY</onMismatch>
  54. </filter>
  55. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  56. <fileNamePattern>${LOG_PATH}/archive/${APP_NAME}-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
  57. <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
  58. <maxHistory>${MAX_HISTORY}</maxHistory>
  59. <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
  60. </rollingPolicy>
  61. </appender>
  62. <root level="INFO">
  63. <appender-ref ref="CONSOLE"/>
  64. <appender-ref ref="FILE_ALL"/>
  65. <appender-ref ref="FILE_ERROR"/>
  66. </root>
  67. <logger name="com.fs" level="WARN"/>
  68. <logger name="org.springframework" level="WARN"/>
  69. </configuration>