我们在项目中可能需要一些日志文件。是动态生成的(配置文件是静态的,打印全局的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