log4j 1.2 版本實現多日誌文件的例子

最近因項目規範,又重新溫習了一下這日誌框架,大家知道log4j 1.x和log4j 2.x版本有較大的區別,比如log4j 2.0與以往的1.x有一個明顯的不同,其配置文件只能採用.xml, .json或者 .jsn,而不支持log4j 1.x常用的配置文件log4j.properties。下面是這幾天抽空弄出來的一個log4j 1.2.7版本的log4j.properties配置文件,供參考。

日誌包:log4j-1.2.17.jar 和 commons-logging-1.1.1.jar 需要注意的是,如果在創建日記記錄器時只是以這方式下面這種方式生成,則此logger調用的是commons-logging-1.1.1.jar 的類實例化日誌記錄器。反之是log4j

private static Log sqlLog = LogFactory.getLog("sqlLog");

下面是log4j.properties的具體配置詳情

log4j.rootLogger=debug,priceLog,stdout


#instruction:
# private static Log sqlLog = LogFactory.getLog("sqlLog");
# sqlLog.error(e.getMessage(),e);
#Console log
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=debug
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} %5p %C{1}-%L (%t %M) | %m%n

#all log data
# example1 in code: private static Logger sqlLog = Logger.getLog("sqlLog");Logger :from log4j package
# example2 in code: private static Logger sqlLog = LogManager.getLog("sqlLog");Logger :from log4j package
log4j.appender.priceLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.priceLog.File=E:/stockwin2dc/logs/price/price
log4j.appender.priceLog.Append=true
log4j.appender.priceLog.Threshold=info
log4j.appender.priceLog.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.priceLog.layout=org.apache.log4j.PatternLayout
log4j.appender.priceLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n
#log4j.appender.priceLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS}-%c{2}-%p %C (%t %M:%L)  | %m%n

# sql log
# example in code: private static Log sqlLog = LogFactory.getLog("sqlLog");Log :from apache's common-logging package
log4j.logger.sqlLog= info,sqlExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.sqlLog = true
log4j.appender.sqlExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.sqlExcep.File=E:/stockwin2dc/logs/price/sqlExcep
log4j.appender.sqlExcep.Append=true
log4j.appender.sqlExcep.ImmediateFlush=true
log4j.appender.sqlExcep.Threshold=error
log4j.appender.sqlExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.sqlExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.sqlExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n

# calc log
# example in code: private static Log calcLog = LogFactory.getLog("calcLog");Log :from apache's common-logging package
log4j.logger.calcLog= info,calcExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.calcLog = true
log4j.appender.calcExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.calcExcep.File=E:/stockwin2dc/logs/price/calcExcep
log4j.appender.calcExcep.Append=true
log4j.appender.calcExcep.ImmediateFlush=true
log4j.appender.calcExcep.Threshold=error
log4j.appender.calcExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.calcExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.calcExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n

# calc log
# example in code: private static Log calcLog = LogFactory.getLog("calcLog");Log :from apache's common-logging package
log4j.logger.httpLog= info,httpExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.httpLog = true
log4j.appender.httpExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.httpExcep.File=E:/stockwin2dc/logs/price/httpExcep
log4j.appender.httpExcep.Append=true
log4j.appender.httpExcep.ImmediateFlush=true
log4j.appender.httpExcep.Threshold=error
log4j.appender.httpExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.httpExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.httpExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n




###insert to mysql db###
#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
#log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
#log4j.appender.DATABASE.user=root
#log4j.appender.DATABASE.password=
#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (\u2019[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n\u2019)
#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
#log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

JAVA 代碼

package com.example.system;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;


/**
 * 功能描述:log4j.properties-example1文件去年後輟多餘部分後放於src根目錄下,不用初始化此日誌配置文件,
 * 導入log4j-1.2.17.jar和commons-logging-1.1.1.jar包運行程序即可。
 * 1、log4j.additivity.爲true時,此子日誌記錄器的信息會同時往根日誌記錄器輸出。
 * 2、子日誌記錄器中log4j.logger.httpLog= info,httpExcep,log4j.appender.httpExcep.Threshold=error 
 * 前面的info是此子日誌的輸出等級開關,後面的error是此子日誌輸出日誌文件的實際開關,
 * 級此子日誌文件只輸入高於error的信息,高於等於 info的則往根日記文件輸出。
 * @author Huanyan.Lu
 * @date:2015年12月23日
 * @time:下午5:36:06
 * @version:1.0
 */
public class Example1 {
	
	 private static Log sqlLog = LogFactory.getLog("sqlLog");
	 private static Log calcLog = LogFactory.getLog("calcLog");
	 private static Logger logger = Logger.getLogger(Example1.class);
	 public static void main(String[] args) throws Exception{
		 //放src根目錄下,自動加載不需要再額外加載配置文件
//		 DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加載.xml文件 
		//PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加載.properties文件 
		 int a =8;
		 int b =0;
		 int c =0;
		 try{
			 c=a/b;
		 }catch(Exception e){
			 calcLog.error(e.getMessage(),e);//此方法可以打印出完整的異常堆棧信息
		 }

		 while(true){
			 sqlLog.error("11111111111");
			 sqlLog.info("000000000000");
			 calcLog.error("22222222222");
			 logger.info("33333333333");
			 Thread.sleep(1000);
		 }

}
}


參考資料:http://www.codeceo.com/article/log4j-usage.html


發佈了50 篇原創文章 · 獲贊 54 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章