log4j2.xml 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- status="warn" 表示Log4j2自身的日志级别,不影响应用日志 -->
  3. <configuration status="warn" monitorInterval="30">
  4. <!-- 定义常用变量 -->
  5. <properties>
  6. <property name="LOG_HOME">logs</property>
  7. <property name="APP_NAME">dc-api</property>
  8. <!-- 日志输出格式:时间 [线程] 级别 [类名] - 消息 -->
  9. <property name="PATTERN_CONSOLE">%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}{FATAL=red, ERROR=red, WARN=yellow, INFO=green, DEBUG=cyan, TRACE=blue} [%thread] %logger{36} - %msg%n</property>
  10. <property name="PATTERN_FILE">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n</property>
  11. <!-- 错误日志详细格式:包含异常堆栈 -->
  12. <property name="PATTERN_ERROR">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%ex{full}%n</property>
  13. </properties>
  14. <!-- 定义所有的appender -->
  15. <appenders>
  16. <!-- 控制台输出:彩色日志,适合开发环境 -->
  17. <Console name="Console" target="SYSTEM_OUT">
  18. <PatternLayout pattern="${PATTERN_CONSOLE}"/>
  19. </Console>
  20. <!-- 所有INFO及以上级别的日志,按日期和大小滚动 -->
  21. <RollingFile name="InfoFile" fileName="${LOG_HOME}/${APP_NAME}.log"
  22. filePattern="${LOG_HOME}/$${date:yyyy-MM}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
  23. <PatternLayout pattern="${PATTERN_FILE}"/>
  24. <Policies>
  25. <!-- 每天生成一个新文件 -->
  26. <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  27. <!-- 文件大小超过50MB时滚动 -->
  28. <SizeBasedTriggeringPolicy size="50 MB"/>
  29. </Policies>
  30. <!-- 最多保留30天的日志 -->
  31. <DefaultRolloverStrategy max="30">
  32. <Delete basePath="${LOG_HOME}" maxDepth="2">
  33. <IfFileName glob="*/${APP_NAME}-*.log.gz"/>
  34. <IfLastModified age="30d"/>
  35. </Delete>
  36. </DefaultRolloverStrategy>
  37. </RollingFile>
  38. <!-- 错误日志:只记录ERROR级别,包含完整异常堆栈 -->
  39. <RollingFile name="ErrorFile" fileName="${LOG_HOME}/${APP_NAME}-error.log"
  40. filePattern="${LOG_HOME}/$${date:yyyy-MM}/${APP_NAME}-error-%d{yyyy-MM-dd}-%i.log.gz">
  41. <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
  42. <PatternLayout pattern="${PATTERN_ERROR}"/>
  43. <Policies>
  44. <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  45. <SizeBasedTriggeringPolicy size="50 MB"/>
  46. </Policies>
  47. <DefaultRolloverStrategy max="90">
  48. <Delete basePath="${LOG_HOME}" maxDepth="2">
  49. <IfFileName glob="*/${APP_NAME}-error-*.log.gz"/>
  50. <IfLastModified age="90d"/>
  51. </Delete>
  52. </DefaultRolloverStrategy>
  53. </RollingFile>
  54. <!-- SQL日志:专门记录MyBatis的SQL语句(仅开发环境) -->
  55. <RollingFile name="SqlFile" fileName="${LOG_HOME}/${APP_NAME}-sql.log"
  56. filePattern="${LOG_HOME}/$${date:yyyy-MM}/${APP_NAME}-sql-%d{yyyy-MM-dd}-%i.log.gz">
  57. <PatternLayout pattern="${PATTERN_FILE}"/>
  58. <Policies>
  59. <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  60. <SizeBasedTriggeringPolicy size="100 MB"/>
  61. </Policies>
  62. <DefaultRolloverStrategy max="7">
  63. <Delete basePath="${LOG_HOME}" maxDepth="2">
  64. <IfFileName glob="*/${APP_NAME}-sql-*.log.gz"/>
  65. <IfLastModified age="7d"/>
  66. </Delete>
  67. </DefaultRolloverStrategy>
  68. </RollingFile>
  69. </appenders>
  70. <!-- 定义logger -->
  71. <loggers>
  72. <!-- MyBatis SQL日志:输出到专门的SQL文件 -->
  73. <Logger name="cn.com.goldenwater.dcproj.dao" level="debug" additivity="false">
  74. <AppenderRef ref="SqlFile"/>
  75. <AppenderRef ref="Console"/>
  76. </Logger>
  77. <!-- MyBatis框架日志 -->
  78. <Logger name="org.mybatis" level="warn" additivity="false">
  79. <AppenderRef ref="Console"/>
  80. <AppenderRef ref="InfoFile"/>
  81. </Logger>
  82. <!-- Spring框架日志:生产环境设为WARN -->
  83. <Logger name="org.springframework" level="warn" additivity="false">
  84. <AppenderRef ref="Console"/>
  85. <AppenderRef ref="InfoFile"/>
  86. </Logger>
  87. <!-- Druid数据源日志 -->
  88. <Logger name="com.alibaba.druid" level="warn" additivity="false">
  89. <AppenderRef ref="Console"/>
  90. <AppenderRef ref="InfoFile"/>
  91. </Logger>
  92. <!-- Hibernate Validator日志 -->
  93. <Logger name="org.hibernate.validator" level="warn" additivity="false">
  94. <AppenderRef ref="Console"/>
  95. <AppenderRef ref="InfoFile"/>
  96. </Logger>
  97. <!-- Apache HttpClient日志 -->
  98. <Logger name="org.apache.http" level="warn" additivity="false">
  99. <AppenderRef ref="Console"/>
  100. <AppenderRef ref="InfoFile"/>
  101. </Logger>
  102. <!-- 业务代码日志:INFO级别 -->
  103. <Logger name="cn.com.goldenwater" level="info" additivity="false">
  104. <AppenderRef ref="Console"/>
  105. <AppenderRef ref="InfoFile"/>
  106. <AppenderRef ref="ErrorFile"/>
  107. </Logger>
  108. <!-- 根logger:默认INFO级别 -->
  109. <root level="info">
  110. <AppenderRef ref="Console"/>
  111. <AppenderRef ref="InfoFile"/>
  112. <AppenderRef ref="ErrorFile"/>
  113. </root>
  114. </loggers>
  115. </configuration>