log4j日誌使用

1,加載log4j日誌

用到的包:

log4j-1.2.14.jar

commons-logging-1.1.1.jar

spring-mock.jar

spring.jar

stringtemplate.jar

找到log4j日誌包,導入項目,編寫log4j配置文件

log4j.rootLogger=INFO, stdout, textLog
log4j.logger.org.springframework=INFO
log4j.logger.org.springframework.transaction=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%n


log4j.appender.textLog = org.apache.log4j.DailyRollingFileAppender 
#log4j.appender.textLog.MaxFileSize=5MB
#log4j.appender.textLog.MaxBackupIndex=10
log4j.appender.textLog.layout=org.apache.log4j.PatternLayout
log4j.appender.textLog.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %x - %m%n
log4j.appender.textLog.DatePattern = '.'yyyy-MM-dd'.log' 
log4j.appender.textLog.File=D\:/temp/Memcached_look_log
日誌配置不會寫請參考百度文庫:http://baike.baidu.com/view/25347.htm

寫好後,代碼內加載配置

public class logTest {
	
	private static final Logger log = Logger.getLogger(logTest.class);
	
	
	public static void logsendTest(){
			
		//同時輸出到控制檯和一個文件的實例並實現了Logger的繼承
		PropertyConfigurator.configure("E:\\javawork\\web_project\\SSHTest_1\\WebRoot\\WEB-INF\\config\\log\\log4j.properties");
		log.debug("Start of the main() in TestLog4j"); 
		log.info("Just testing a log message with priority set to INFO"); 
		log.warn("Just testing a log message with priority set to WARN"); 
		log.error("Just testing a log message with priority set to ERROR"); 
		log.fatal("Just testing a log message with priority set to FATAL"); 
		log.log(Priority.WARN, "Testing a log message use a alternate form" );
		log.info("end");
		System.out.print(System.currentTimeMillis());		
	}	
	public static void main(String[] args) {
			logTest.logsendTest();
	}
	

}

J2EE項目加載日誌需要寫個servlet啓動時加載,代碼錄下

    <context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/config/log/log4j.properties</param-value>
	</context-param>   
  <servlet>
       <servlet-name>log4jinit</servlet-name>
       <servlet-class>logTest.LogServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>

logTest.LogServlet需要用到spring包裏的方法進行加載,代碼錄下

	public void init() {
		// Put your code here
		Log4jWebConfigurer.initLogging(this.getServletContext());
		log.info("***************服務器啓動*****************");
		
		
	}

當然你也可以不寫servlet直接調用spring日誌處理進行加載,web.xml配置錄下

 <servlet>
	<servlet-name>log4jConfigListener</servlet-name>
		<servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
這樣,你j2ee項目啓動的時候,日誌就已經加載了

2,日誌格式的修改,自定義日誌格式。lo4j除了標準定義的格式以爲,還可以自定義格式輸出

log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%t] %p %c %X{levelProject} %X{MouldProject} - %m%n
這裏,%d:時間, %t線程,%p打印類型,%c類目,  %X{levelProject}自定義的levelProject,%x{MouldProject}自定義的MouldeProject類目,%m打印信息,%n換行符

		MDC.put("levelProject", level);
		MDC.put("MouldProject", LoggingApi.getProjectbyClass(clazz));
3,日誌存放目錄自定義,與日誌名稱自定義

log4j.appender.textLog.File=${user.log4jdir}/${usr.log4jprofix}_log

java代碼設置user.log4jdir與user.log4jprofix

System.setProperty(CommonConstant.LOG4J_CONFIG_FLAG, log4jLogDir); 
System.setProperty(CommonConstant.LOG4J_CONFIG_PROFIX, log4jlogfilePifx);



4,日誌查看與解析,這裏用apache的Chainsaw V2 工具進行解析,Chainsaw V2下載路徑http://logging.apache.org/chainsaw/

點右鍵新建一個Receivers,Chainsaw V2支持在線socket解析,也支持本地文件查看,這裏我用本地文件查看

新建一個LogFilePatternReceiver接收器,其中,
fileURL:file:///c:/test.log
logFormat:TIMESTAMP[THREAD] LEVEL CLASS PROP(levelProject) PROP(MouldProject) - MESSAGE(格式必須保持log4j打印格式一致,否則Chainsaw V2會查不到對應字段)
CLASS (FILE:LINE) - MESSAGE
name:test
點擊OK按鈕,然後就可以在Chainsaw中對日誌進行過濾或排序了。


比如,可以設定:PROP.leveProject == ‘1′ && PROP.MouldProject == ‘Test’,並按照時間戳進行排序,
這樣就可以看到級別是“1”,模塊是“Test”的日誌打印了


參考鏈接:http://hi.baidu.com/javaworld2006/item/e1ba90332dc0e5f7e6bb7af2

http://shansun123.iteye.com/blog/1016759



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