使用Log4j在系统中配置两个不同的Log输出
2012-04-25 13:19
309 查看
转自:http://blog.csdn.net/godroad/archive/2006/02/24/607940.aspx
一般的Log的使用,通过配置Log4j的配置文件,就可以生成Log.
在开发中碰到一个对Log要求比较高的需求。要求Log的输出分成两类,一类是普通Log,就是平常操作记录的Log;一类是异常Log,就是在出现异常的时候将异常记录下来。
两类log要在不一样的文件中输出。普通log纪录在三个文件中循环使用。异常Log则是在运行出现异常的时候新建一个文件详细记录异常的内容,一次运行出现的异常信息记录在一个文件中,下次运行出现异常则新建一个文件。
这个需求不能简单的通过写Log4j的配置文件来实现,而需要在代码中调用Log4j的类来实现。
public class LogRun {
//设定两个Log
public static Logger normalLogger = Logger.getLogger("normal.logger");
public static Logger exceptionLogger = Logger.getLogger("exception.logger");
public static final String PROFILE = "log4j.properties";
//设定异常log输出的路径
private static final String PATH = "log/exception/";
static {
URL configFileResource = LogRun.class.getResource(PROFILE);
PropertyConfigurator.configure(configFileResource);
}
//构造方法,生成一个新的异常Log文件
public LogRun(){
try {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName = PATH + "exception_" + sf.format(date).toString() + ".log";
FileAppender exceptionAppender = new FileAppender(new SimpleLayout(), fileName);
exceptionLogger.addAppender(exceptionAppender);
} catch (Exception e) {
MessageBox.errorBox(e);
}
}
}
在代码中,只要初始化:
public static Logger logger = Logger.getLogger(Log.class);
就可以通过
LogRun.normalLogger.debug来记录普通Log。
当第一次出现异常的时候,则需要初始化LogRun方法创建一个异常文件。并且通过LogRun.exceptionLogger.error来记录异常Log。在下次出现异常的时候
则只要调用LogRun.exceptionLogger.error来记录就OK了。
附上配置文件:
log4j.category.normal.logger=DEBUG, normal,stdout
log4j.category.exception.logger=ERROR
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n
log4j.appender.normal=org.apache.log4j.RollingFileAppender
log4j.appender.normal.File=log/normal.log
log4j.appender.normal.MaxFileSize=100kb
log4j.appender.normal.MaxBackupIndex=4
log4j.appender.normal.layout=org.apache.log4j.PatternLayout
log4j.appender.normal.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n
一般的Log的使用,通过配置Log4j的配置文件,就可以生成Log.
在开发中碰到一个对Log要求比较高的需求。要求Log的输出分成两类,一类是普通Log,就是平常操作记录的Log;一类是异常Log,就是在出现异常的时候将异常记录下来。
两类log要在不一样的文件中输出。普通log纪录在三个文件中循环使用。异常Log则是在运行出现异常的时候新建一个文件详细记录异常的内容,一次运行出现的异常信息记录在一个文件中,下次运行出现异常则新建一个文件。
这个需求不能简单的通过写Log4j的配置文件来实现,而需要在代码中调用Log4j的类来实现。
public class LogRun {
//设定两个Log
public static Logger normalLogger = Logger.getLogger("normal.logger");
public static Logger exceptionLogger = Logger.getLogger("exception.logger");
public static final String PROFILE = "log4j.properties";
//设定异常log输出的路径
private static final String PATH = "log/exception/";
static {
URL configFileResource = LogRun.class.getResource(PROFILE);
PropertyConfigurator.configure(configFileResource);
}
//构造方法,生成一个新的异常Log文件
public LogRun(){
try {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName = PATH + "exception_" + sf.format(date).toString() + ".log";
FileAppender exceptionAppender = new FileAppender(new SimpleLayout(), fileName);
exceptionLogger.addAppender(exceptionAppender);
} catch (Exception e) {
MessageBox.errorBox(e);
}
}
}
在代码中,只要初始化:
public static Logger logger = Logger.getLogger(Log.class);
就可以通过
LogRun.normalLogger.debug来记录普通Log。
当第一次出现异常的时候,则需要初始化LogRun方法创建一个异常文件。并且通过LogRun.exceptionLogger.error来记录异常Log。在下次出现异常的时候
则只要调用LogRun.exceptionLogger.error来记录就OK了。
附上配置文件:
log4j.category.normal.logger=DEBUG, normal,stdout
log4j.category.exception.logger=ERROR
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n
log4j.appender.normal=org.apache.log4j.RollingFileAppender
log4j.appender.normal.File=log/normal.log
log4j.appender.normal.MaxFileSize=100kb
log4j.appender.normal.MaxBackupIndex=4
log4j.appender.normal.layout=org.apache.log4j.PatternLayout
log4j.appender.normal.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p %m%n
相关文章推荐
- 使用Log4j在系统中配置两个不同的Log输出
- log4j的配置及使用,输出到文件和控制台,不同包输出到不同文件
- 使用log4j配置不同文件输出不同内容
- 使用最新的log4cplus(1.1.1)输出多个自定义日志文件,隔离不同的 log 文件输出
- Java使用Log日志系统(common-logging和log4j)
- Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法
- Android系统开发中LOG的输出与使用
- Log4j按级别输出日志到不同文件配置分析
- MAVEN项目使用log4j配置输出日志
- Log4j按级别输出日志到不同文件配置分析
- Log4j按级别输出日志到不同文件配置分析
- log4j2 不同级别的log输出到不同的文件
- [转]Android系统开发中LOG的输出与使用
- Log4j按级别输出日志到不同文件配置分析
- Android中使用log4j输出log内容到sd卡
- 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析
- STM32的DMA的配置使用(关于原理。在《计算机组成与系统结构》的输入输出系统中有一些DMA的原理介绍)
- Java使用Log日志系统(common-logging和log4j)
- Log4j按级别输出日志到不同文件配置分析
- Log4j按级别输出日志到不同文件配置分析