Skip to content

Instantly share code, notes, and snippets.

@larry1001
Created March 15, 2019 05:49
Show Gist options
  • Save larry1001/ffde1b39c70d68d60261ce801a36c2b5 to your computer and use it in GitHub Desktop.
Save larry1001/ffde1b39c70d68d60261ce801a36c2b5 to your computer and use it in GitHub Desktop.
Springboot log4j2 配置
<?xml version="1.0" encoding="UTF-8"?>
<!--
status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成TRACE时,会看到log4j2内部各种详细输出
monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。此处表示每隔几秒重读一次配置文件.
日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
如果设置为WARN,则低于WARN的信息都不会输出
-->
<Configuration status="INFO" monitorInterval="1800">
<!-- 参数配置 -->
<Properties>
<!-- 配置日志文件输出目录 -->
<Property name="LOG_HOME">./logs/test/</Property>
<!-- 日志输出文件名 -->
<property name="FILE_NAME">test-info</property>
<property name="ERROR_FILE_NAME">test-error</property>
<!-- 日志格式化 -->
<property name="console_pattern_layout">
%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5level][%c{1.}]-(%t)} %m%n
</property>
<property name="pattern_layout">
%d{yyyy-MM-dd HH:mm:ss.SSS} [%5level][%logger{36}]-(%t) %m%n
</property>
</Properties>
<!-- 日志配置Appender -->
<Appenders>
<!-- 输出控制台的配置 -->
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="ACCEPT" />
<PatternLayout pattern="${console_pattern_layout}"/>
</Console>
<!-- 文件输出配置,文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用 -->
<!--<File name="log" fileName="log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>-->
<!--
循环日志文件配置:日志文件大于阀值的时候,就开始写一个新的日志文件
这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档
fileName : 指定当前日志文件的位置和文件名称
filePattern : 指定当发生Rolling时,文件的转移和重命名规则
SizeBasedTriggeringPolicy : 指定当文件体积大于size指定的值时,触发Rolling
DefaultRolloverStrategy : 指定最多保存的文件个数
TimeBasedTriggeringPolicy : 这个配置需要和filePattern结合使用
注意filePattern中配置的文件重命名规则是${FILE_NAME}_%d{yyyy-MM-dd}_%i,最小的时间粒度是dd,即天,
TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1天生成一个新文件
-->
<RollingRandomAccessFile name="INFO_FILE"
fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}_%i.log">
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${pattern_layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!-- 错误日志 -->
<RollingRandomAccessFile name="ERROR_FILE"
fileName="${LOG_HOME}/${ERROR_FILE_NAME}.log"
filePattern="${LOG_HOME}/${ERROR_FILE_NAME}-%d{yyyy-MM-dd}_%i.log">
<Filters>
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${pattern_layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!-- 异步日志配置 -->
<Async name="AsyncAll">
<AppenderRef ref="Console"/>
<AppenderRef ref="INFO_FILE"/>
<AppenderRef ref="ERROR_FILE"/>
</Async>
</Appenders>
<!-- 日志记录Logger -->
<Loggers>
<Logger name="org.hibernate" level="INFO" additivity="false">
<AppenderRef ref="AsyncAll"/>
</Logger>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="INFO_FILE"/>
<AppenderRef ref="ERROR_FILE"/>
</Root>
</Loggers>
</Configuration>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment