使用jar:
log4j-core-2.7.jar
log4j-api-2.7.jar
lo4j2.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!-- monitorInterval 該文件自動檢測一次時間(s),最低配置5秒 -->
<Configuration monitorInterval="30" status="WARN">
<!-- 輸出源配置 -->
<Appenders>
<!--控制檯-->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- 遊戲總日誌文件輸出源 -->
<RollingFile name="game" fileName="./log/game.log"
filePattern="./log/game.log.%i.%d{yyyy-MM-dd}">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<!-- 設置每日備份 filePattern格式文件-->
<TimeBasedTriggeringPolicy modulate="true" />
<!-- 設置滿足指定大小則備份 filePattern格式文件 -->
<SizeBasedTriggeringPolicy size="512MB" />
</Policies>
</RollingFile>
<!-- 錯誤文件輸出源配置 -->
<RollingFile name ="error" fileName="./log/error/error.log"
filePattern="./log/error/error.log.%d{yyyy-MM-dd}">
<!-- 配置該文件記錄最低門檻過濾器 只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
<ThresholdFilter level ="error" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" />
</Policies>
</RollingFile>
<!-- 戰鬥文件輸出源 -->
<RollingFile name="battle" fileName="./log/battle/battle.log"
filePattern="./log/battle/battle.log.%d{yyyy-MM-dd}">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}|%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<!-- 日誌入口調用配置 -->
<Loggers>
<!--
1.LogManager.getLogger()中參數會根據name來查找對應Logger配置
2. additivity 設置不會再日誌中出現2次
-->
<Logger name="battle" level="debug" additivity="false">
<AppenderRef ref="battle" />
</Logger>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="game"/>
<AppenderRef ref="error"/>
</Root>
</Loggers>
</Configuration>