我们在项目中可能需要一些日志文件。是动态生成的(配置文件是静态的,打印全局的log)。比如我们按照类别来收集用户输入的内容。一个类别一天一个文件。 这时候就可以用代码调用Log4j来生成
?
package com.bj58.zhaoren.sou.utils;
import java.io.IOException;
import java.util.Map;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.jboss.netty.util.internal.ConcurrentHashMap;
import com.bj58.spat.scf.server.contract.context.Global;
/**
* 这个日志收集所有的query
* @date 2015年12月29日
* @author shencl
*/
public class QueryLog {
private static String skill_path = Global.getSingleton().getRootPath() + "logs/query/skill.log";
private static String demand_path = Global.getSingleton().getRootPath() + "logs/query/demand.log";
private static Map<String, Logger> map = new ConcurrentHashMap<String, Logger>();
private static Logger skillLog = getInstance(skill_path);
private static Logger demandLog = getInstance(demand_path);
public synchronized static Logger getInstance(String logpath) {
if (map.get(logpath) != null) {
return map.get(logpath);
}
try {
Logger log = Logger.getLogger(logpath);
log.setLevel(Level.INFO);
//Layout layout = new PatternLayout("%d{yyy-MM-dd HH:mm:ss} - %m%n");
Layout layout = new PatternLayout("%m%n");
DailyRollingFileAppender fileappender = new DailyRollingFileAppender(layout, logpath, "‘.‘yyyy-MM-dd");
fileappender.setName(logpath);
log.addAppender(fileappender);
map.put(logpath, log);
} catch (IOException e) {
e.printStackTrace();
}
return map.get(logpath);
}
/**
* 收集skill所有的query
*/
public static void addSkillLog(String query) {
skillLog.info(query);
}
/**
* 收集demand所有的query
*/
public static void addDemandLog(String query) {
demandLog.info(query);
}
}
?
原文:http://supben.iteye.com/blog/2267834