http://blog.csdn.net/inrtyx/article/details/17791627#userconsent#
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;
}
}