java按流水號生成Log

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

/**
 * @projectName wififree
 * @author tangwzh
 * @function 按照用戶ID來生成log,可以根據每個用戶ID來動態生成logger。
 * @createTime 2013-12-23 下午05:38:42
 */
public class LoggerUtil {

	public static Logger getLoggerByName(String name) {

		// 生成新的Logger,如果已經有了一個Logger實例返回現有的
		Logger logger = Logger.getLogger(name);

		// 清空Appender。特別是不想使用現存實例時一定要初期化
		logger.removeAllAppenders();

		// 設定Logger級別。
		Level level = Level.DEBUG;
		String levels = Constants.LOG4J_LEVEL;
		if ("info".equals(levels)) {
			level = Level.INFO;
		} else if ("error".equals(levels)) {
			level = Level.ERROR;
		}
		logger.setLevel(level);

		// 設定是否繼承父Logger。默認爲true。繼承root輸出。設定false後將不輸出root。
		if ("true".equals(Constants.LOG4J_IS_ADDITIVITY)) {
			logger.setAdditivity(true);
		} else {
			logger.setAdditivity(false);
		}

		// 生成新的Appender
		FileAppender appender = new DailyRollingFileAppender();
		PatternLayout layout = new PatternLayout();
		// log的輸出形式
		String conversionPattern = Constants.LOG4J_CONVERSION_PATTERN;
		layout.setConversionPattern(conversionPattern);
		appender.setLayout(layout);

		// log輸出路徑
		appender.setFile(Constants.LOG4J_FILE_PATH + name + ".log");

		// log的編碼
		appender.setEncoding("UTF-8");

		// true:在已存在log文件後面追加 。false:新log覆蓋以前的log
		if ("true".equals(Constants.LOG4J_IS_APPEND)) {
			appender.setAppend(true);
		} else {
			appender.setAppend(false);
		}

		// 適用當前配置
		appender.activateOptions();

		// 將新的Appender加到Logger中
		logger.addAppender(appender);

		return logger;
	}

}


config.properties文件

# set Log4j Level: debug, info, error
log4jLevel=debug
# set log output mode
log4jConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
# set file path
log4jFilePath=D\:/log/wififree/serialnum/
#log4jFilePath=/data/web/log/wififree/term/serialnum/
# true: output to root. false: inverse;
log4jIsAdditivity=false
# set encoding
log4jEncoding=UTF-8
# true: append to the old log。false: create new log
log4jIsAppend=true


Constants.java文件

/**********log4j相關的配置************/
    public static String  LOG4J_LEVEL = resourcesCfg.getProperty("log4jLevel");
    public static String  LOG4J_CONVERSION_PATTERN = resourcesCfg.getProperty("log4jConversionPattern");
    public static String  LOG4J_FILE_PATH = resourcesCfg.getProperty("log4jFilePath");
    public static String  LOG4J_IS_ADDITIVITY = resourcesCfg.getProperty("log4jIsAdditivity");
    public static String  LOG4J_ENCODING = resourcesCfg.getProperty("log4jEncoding");
    public static String  LOG4J_IS_APPEND = resourcesCfg.getProperty("log4jIsAppend");



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