今天学习了Log4j,主要要设置日志的输出位置(Appender)、输出优先级(FATAL,ERROR,WARN,INFO,DEBUG)、输出格式(Layout)。 由于日志输出是针对包来说的,改进为对类名来创建日志。 package log4j; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.log4j.Layout; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.RollingFileAppender; /**封装Log4j,实现按照类组织文件输出日志*/ public class GdLogger { protected GdLogger() throws Exception { throw new Exception(); } public static Logger getLogger(Class aClass) { return getLog4jLogger(aClass); } /** * 获取Log4j * @param aClass * @return Logger */ public static Logger getLog4jLogger(Class aClass) { String logName = ""; Logger logger = null; logger = Logger.getLogger(aClass); logger.addAppender(getAppender(aClass.getName())); return logger; } public static RollingFileAppender getAppender(String className) { RollingFileAppender appender = null; try { String pattern = "[%-5p] %D{yyyy-MM-dd HH:mm:ss} %c - %m%n"; Layout layout = new PatternLayout(pattern); appender = new RollingFileAppender(layout, getPath(className)); appender.setMaxFileSize("5MB"); appender.setMaxBackupIndex(5); }catch (IOException e) { new Exception(e); } return appender; } private static String getPath(String className) { StringBuffer path = new StringBuffer(); path.append("logs"); checkPathExists(path); path.append("/" + className); DateFormat dformate = new SimpleDateFormat("yyyy-MM-dd"); path.append(dformate.format(new Date()) + ".log"); return path.toString(); } private static void checkPathExists(StringBuffer path) { String thePath = path.toString(); File file = new File(thePath); if(!file.exists()) { file.mkdir(); } } }