將log4j.xml修改為log4j2.xml
阿新 • • 發佈:2018-12-19
最近由於工作原因需要將log4j 1.2版本升級為2.0以上,就需要將log4j配置檔案修改成2.0版本
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--將日誌輸出到控制檯-->
<appender name="Console" class="org.apache.log4j.ConsoleAppender" >
<!--輸出的級別為INFO-->
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<!--日誌輸出的格式-->
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n" />
</layout>
</appender>
<!--將日誌輸出到檔案中,並且每隔一定的時間產生一個新的日誌檔案-->
<appender name="Info" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/info.log" />
<param name="Threshold" value="INFO" />
<param name="Append" value="true" />
<param name="Encoding" value="UTF-8" />
<!--每隔一定的時間產生一個新的日誌檔案,檔名稱的格式為value屬性對應的值-->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n" />
</layout>
<!--過濾日誌級別,確保該檔案中只能儲存INFO和WARN級別的日誌-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="WARN" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<appender name="Error" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/error.log" />
<param name="Threshold" value="ERROR" />
<param name="Append" value="true" />
<param name="Encoding" value="UTF-8" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<root>
<appender-ref ref="Info" />
<appender-ref ref="Error" />
<appender-ref ref="Console" />
</root>
</log4j:configuration>
對應的log4j2.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn">
<Appenders>
<!--將日誌在控制檯輸出-->
<Console name="Console" target="SYSTEM_OUT">
<!--日誌輸出的格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n"/>
</Console>
<!--將日誌輸出到檔案中,fileName:檔案的路徑和名稱,filePattern:採用某種輸出日誌的規則,日誌的路徑名和日誌檔名稱格式-->
<RollingFile name="infofile" fileName="../logs/info.log" filePattern="../logs/info.log.%d{yyyy-MM-dd}">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n</Pattern>
</PatternLayout>
<!--過濾日誌級別,確保該檔案中只能儲存INFO和WARN級別的日誌-->
<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<!--日誌檔案產生的策略,每隔一定的時間產生一個新的日誌檔案-->
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="errorfile" fileName="../logs/error.log" filePattern="../logs/error.log.%d{yyyy-MM-dd}">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<loggers>
<Logger name="info" level="INFO">
<AppenderRef ref="infofile" />
</Logger>
<Logger name="error" level="ERROR">
<AppenderRef ref="errorfile" />
</Logger>
<Root>
<AppenderRef ref="Console"/>
</Root>
</loggers>
</configuration>
程式碼詳細講解: (1)1.x版本中 — Appender:日誌輸出器,配置日誌的級別、輸出位置等 對應2.x版本中Appenders (2)將日誌輸出到控制檯、檔案等在1.X版本中使用
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
根據class找到對應的類去查詢輸出日誌的格式,輸出到相應的位置 在2.X版本中直接在
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
</Console>
<RollingFile name="infofile" fileName="../logs/info.log" filePattern="../logs/info.log.%d{yyyy-MM-dd}">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p $r [%t] %C.%M(%L) | %m%n</Pattern>
</PatternLayout>
<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
其中Consle是將日誌檔案輸出到控制檯 RollingFile將日誌輸出到檔案中,fileName屬性對應日誌路徑以及檔案,filePattern屬性為日誌名稱的格式 PatternLayout:日誌輸出的格式 Filters:過濾日誌輸出的級別,下圖代表該檔案中只能輸出INFO和WARN級別的日誌 Policies:日誌檔案產生的策略,下圖表示每隔一定的時間就產生一個新的日誌檔案