Log4j2框架适配器

info

log4J2由于是通过插件形式实现的,log4J2有自动扫描插件的功能。所以无需对配置文件做任何更改就能生效。

caution

由于log4j2是插件的机制,为了避免log4j2提前加载到自己的插件,请把log4j2配置文件的pattern中的m/msg/message改成tm/tmsg/tmessage

如果你不想改这个,还有一个办法,就是把tlog的依赖包在pom文件里提到log4j2依赖包的前面。

下面给出示例:

同步日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="30">
<!--先定义所有的appender-->
<appenders>
<!--控制台日志-->
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
</console>
<!--文件日志-->
<!--同步日志-->
<RollingFile name="RollingFileInfo" fileName="./logs/log4j2-sync-rolling.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
<!--同步日志-->
<File name="SyncFile" fileName="./logs/log4j2-sync.log" append="false" >
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
</File>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="SyncFile"/>
<appender-ref ref="RollingFileInfo"/>
</root>
</loggers>
</configuration>

异步日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="30">
<!--先定义所有的appender-->
<appenders>
<!--控制台日志-->
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
</console>
<!--文件日志-->
<RollingFile name="RollingFileInfo" fileName="./logs/log4j2-async-rolling.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
<!--异步日志:一 先声明同步文件-->
<File name="AsyncLogFile" fileName="./logs/log4j2-async.log" append="false" >
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %tmsg%n"/>
</File>
<!--异步日志:二 使用Async配置异步 -->
<Async name="AsyncFile">
<AppenderRef ref="AsyncLogFile"/>
</Async>
<!--异步输出到控制台-->
<Async name="AsyncConsole">
<AppenderRef ref="Console"/>
</Async>
<!--异步输出到滚动日志-->
<Async name="AsyncRolling">
<AppenderRef ref="RollingFileInfo"/>
</Async>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<root level="INFO">
<appender-ref ref="AsyncFile"/>
<appender-ref ref="AsyncConsole"/>
<appender-ref ref="AsyncRolling"/>
</root>
</loggers>
</configuration>