项目中需要打印一些特定信息到日志中,因为不想掺杂一些其他的日志,所以自定义一个日志级别
日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
intLevel值依次为0,100,200,300,400,500,600,700
intLevel 值越小,级别越高
具体代码如下:
log4j2.xml
<configuration status="DEBUG" monitorInterval="30">
<CustomLevels>
<!--注意 : intLevel 值越小,级别越高 (log4j2 官方文档)-->
<CustomLevel name="CUSTOMER" intLevel="50" />
</CustomLevels>
<!--先定义所有的appender -->
<appenders>
<RollingFile name="RollingFileCustomer" fileName="logs/customer.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/customer-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="CUSTOMER" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
<loggers>
<root level="INFO">
<appender-ref ref="RollingFileCustomer" />
</root>
</loggers>
</configuration>
class中进行日志打印
private org.apache.logging.log4j.Logger log = LogManager.getLogger(AuthenticationInterceptor.class.getName());
log.log(Level.forName("CUSTOMER", 50), "{},{},{}",uid, DateUtil.datetime2String(new Date()),requestURI);
输出结果
18,2018-12-26 21:23:31,/java/api/usr/getUserInfo
34,2018-12-26 21:23:32,/java/api/userPlan/findUserPlan
18,2018-12-26 21:24:09,/java/api/usr/getUserInfo
18,2018-12-26 21:24:38,/java/api/usr/getUserInfo
18,2018-12-26 21:24:51,/java/api/usr/getUserInfo