https://blog.csdn.net/teaey/article/details/24184607

log4j2.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
  3. <!--status="WARN" :用于设置log4j2自身内部日志的信息输出级别,默认是OFF-->
  4. <!--monitorInterval="30" :间隔秒数,自动检测配置文件的变更和重新配置本身-->
  5. <configuration status="WARN" monitorInterval="30">
  6. <Properties>
  7. <!--自定义一些常量,之后使用${变量名}引用-->
  8. <Property name="logFilePath">log</Property>
  9. <Property name="logFileName">test.log</Property>
  10. </Properties>
  11. <!--appenders:定义输出内容,输出格式,输出方式,日志保存策略等,常用其下三种标签[console,File,RollingFile]-->
  12. <appenders>
  13. <!--console :控制台输出的配置-->
  14. <console name="Console" target="SYSTEM_OUT">
  15. <!--PatternLayout :输出日志的格式,LOG4J2定义了输出代码,详见第二部分-->
  16. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  17. </console>
  18. <!--File :同步输出日志到本地文件-->
  19. <!--append="false" :根据以下日志策略,每次清空文件重新输入日志,可用于测试-->
  20. <File name="log" fileName="${logFilePath}/${logFileName}" append="false">
  21. <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  22. </File>
  23. <!--SMTP :邮件发送日志-->
  24. <SMTP name="Mail" subject="****SaaS系统正式版异常信息" to="message@message.info" from="message@lengjing.info" smtpUsername="message@message.info" smtpPassword="LENG****1234" smtpHost="mail.lengjing.info" smtpDebug="false" smtpPort="25" bufferSize="10">
  25. <PatternLayout pattern="[%-5p]:%d{YYYY-MM-dd HH:mm:ss} [%t] %c{1}:%L - %msg%n" />
  26. </SMTP>
  27. <!-- ${sys:user.home} :项目路径 -->
  28. <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
  29. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
  30. <!--ThresholdFilter :日志输出过滤-->
  31. <!--level="info" :日志级别,onMatch="ACCEPT" :级别在info之上则接受,onMismatch="DENY" :级别在info之下则拒绝-->
  32. <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
  33. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  34. <!-- Policies :日志滚动策略-->
  35. <Policies>
  36. <!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件,
  37. modulate="true" : 产生文件是否以0点偏移时间,即6点,12点,18点,0点-->
  38. <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
  39. <!-- SizeBasedTriggeringPolicy :文件大小滚动策略-->
  40. <SizeBasedTriggeringPolicy size="100 MB"/>
  41. </Policies>
  42. <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
  43. <DefaultRolloverStrategy max="20"/>
  44. </RollingFile>
  45. <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
  46. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
  47. <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
  48. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  49. <Policies>
  50. <TimeBasedTriggeringPolicy/>
  51. <SizeBasedTriggeringPolicy size="100 MB"/>
  52. </Policies>
  53. </RollingFile>
  54. <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
  55. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
  56. <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
  57. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  58. <Policies>
  59. <TimeBasedTriggeringPolicy/>
  60. <SizeBasedTriggeringPolicy size="100 MB"/>
  61. </Policies>
  62. </RollingFile>
  63. </appenders>
  64. <!--然后定义logger,只有定义了logger并引入了appenderappender才会生效-->
  65. <loggers>
  66. <!--过滤掉springmybatis的一些无用的DEBUG信息-->
  67. <!--Logger节点用来单独指定日志的形式,name为包路径,比如要为org.springframework包下所有日志指定为INFO级别等。 -->
  68. <logger name="org.springframework" level="INFO"></logger>
  69. <logger name="org.mybatis" level="INFO"></logger>
  70. <!-- Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出 -->
  71. <root level="all">
  72. <appender-ref ref="Console"/>
  73. <appender-ref ref="RollingFileInfo"/>
  74. <appender-ref ref="RollingFileWarn"/>
  75. <appender-ref ref="RollingFileError"/>
  76. </root>
  77. <!--AsyncLogger :异步日志,LOG4J有三种日志模式,全异步日志,混合模式,同步日志,性能从高到低,线程越多效率越高,也可以避免日志卡死线程情况发生-->
  78. <!--additivity="false" : additivity设置事件是否在root logger输出,为了避免重复输出,可以在Logger 标签下设置additivity为”false”-->
  79. <AsyncLogger name="AsyncLogger" level="trace" includeLocation="true" additivity="false">
  80. <appender-ref ref="RollingFileError"/>
  81. </AsyncLogger>
  82. </loggers>
  83. </configuration>

https://www.jianshu.com/p/d13c2e50a89c