package com.taobao.easyweb.core.app; import com.taobao.easyweb.core.Configuration; import com.taobao.easyweb.core.context.Context; import com.taobao.easyweb.core.context.ThreadContext; import org.apache.commons.lang.StringUtils; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created with IntelliJ IDEA. User: jimmey Date: 12-11-25 Time: ����4:30 To * change this template use File | Settings | File Templates. */ public class AppLogger { public static Map<String, Logger> siteLogger = new ConcurrentHashMap<String, Logger>(); public static Logger getLogger() { return getAppLogger(null); } public static Logger getLogger(String name) { return getAppLogger(name); } public static Logger getLogger(Class<?> clazz) { return getAppLogger(null); } public static Logger getAppLogger(String name) { Context context = ThreadContext.getContext(); String appKey = "easyweb"; if (context != null && StringUtils.isNotBlank(context.getAppName())) { appKey = context.getAppName(); } return getAppLogger(appKey, name); } public static Logger getAppLogger(String appKey, String logName) { if (logName == null) { logName = "easyweb"; } Logger logger = siteLogger.get(appKey); if (logger == null) { PatternLayout layout = new PatternLayout(); // layout.setConversionPattern("%d %-5p %c{2} %n%m%n"); layout.setConversionPattern("%d{yyyy-MM-dd HH:mm:ss} %-5p %X{requestURI} %c{2} %n%m%n"); DailyRollingFileAppender appender = new DailyRollingFileAppender(); appender.setLayout(layout); appender.setFile(Configuration.getAppLog(appKey)); appender.activateOptions(); appender.setImmediateFlush(true); appender.setEncoding("gbk"); logger = Logger.getLogger(appKey + "-" + logName); logger.removeAllAppenders(); logger.addAppender(appender); logger.setLevel((Level) Level.INFO); logger.setAdditivity(false); siteLogger.put(appKey, logger); } return logger; } }