1. 程式人生 > >將log4j.xml修改為log4j2.xml

將log4j.xml修改為log4j2.xml

最近由於工作原因需要將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:日誌檔案產生的策略,下圖表示每隔一定的時間就產生一個新的日誌檔案 在這裡插入圖片描述