log4j2 設置,使用總結

log4j2 已經出來一段時間了,項目中一直用log4j,log4j2出來後對它有些興趣,這兩天好好地學習了一遍,在這裏寫一個總結,或許將來會用得到。


1,安裝配置

       我採用的是maven安裝方法,請先參考J2ee開發環境的建立,然後是查看最新的log4j2的版本是哪個,這個不用去log4j2的官網,可以直接在mavenSearch中查看,輸入log4j2,下面顯示的最新可用版本是2.4.1,好,在項目中的pom.xml中加入如下代碼:

<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.4.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.4.1</version>
		</dependency>

,保存,在eclipse中就會自動下載文件並添加到項目路徑

2,log4j2.xml文件配置

     log4j2文件是日誌配置文件,注意有2個功能,一是設置輸入格式,二是設置輸入目的地,具體配置參數意義可參考log4jApi,appender的設置請參考appender的節點,這個纔是log4j2強大的地方。以下是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="%d [%-5level] %C.%M:%L - %m%n" />
		</Console>
		<!-- <File name="log" fileName="e:\\log.log" append="false">
			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
		</File>
		<RollingFile name="RollingFile" fileName="e:\logs\app.log" filePattern="e:\logs\$${date:yyyy-MM}\app-%d{MM-dd-yyyy}-%i.log.gz">
			<PatternLayout>
				<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1 "/>
				<SizeBasedTriggeringPolicy size="250 MB"/>
			</Policies>
		</RollingFile> -->
	</Appenders>
	<Loggers>
		
		<Root level="trace">
			<AppenderRef ref="Console" />
		</Root>
	</Loggers>
</Configuration>

把這個文件保存到項目中的src/main/resources目錄下,命名爲log4j2.xml,當然,log4j2有默認配置,沒有這個文件也可以使用,但很明顯,默認的肯定不夠用,也配不來輸出到文件的功能。

3.使用

       log4j2要用在java文件上,我個人認爲,可以建個根類,在根類中初始化logger,其他類只要集成根類,就不用再次配置了,很方便,根類如下配置:

package maven;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class BaseAction {
	public static final Logger logger=LogManager.getLogger(LogTest.class);
}

根類就是要越簡單越好。其他類使用:

package maven;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest extends BaseAction{
	
	public static void main(String[] args){
		logger.entry();
		//for(int i=0;i<Integer.MAX_VALUE;i++){
		logger.error("Ha Ha");
		//}
		logger.info("I am {} a {} man","happy","good");
		try{
			int t=123/0;
		}catch(Exception e){
			logger.catching(e);
		}
		logger.exit();
	}
}

輸出:

2015-10-21 09:16:29,676 [TRACE] maven.LogTest.main:9 - entry
2015-10-21 09:16:29,677 [ERROR] maven.LogTest.main:11 - Ha Ha
2015-10-21 09:16:29,678 [INFO ] maven.LogTest.main:13 - I am happy a good man
2015-10-21 09:16:29,678 [ERROR] maven.LogTest.main:17 - catching
java.lang.ArithmeticException: / by zero
	at maven.LogTest.main(LogTest.java:15) [classes/:?]
2015-10-21 09:16:29,681 [TRACE] maven.LogTest.main:19 - exit

總結:

         以上是log4j2的基本使用方法,其變化和技術要點主要在log4j2.xml中的appender的設置上,通過appender可以設置其日誌輸出到控制檯,文件,遠程,數據庫。

一個成熟的項目必須有個成熟的日誌系統,log4j2很顯然可以滿足大部分日誌要求,爲什麼用log4j2而不用log4j呢?對我來說,最主要原因是可以用xml配置,而不是讓人討厭的profie文件。


           本文100%原創,你的評論就是對我的最好回報,引用請加上說明和作者。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章