您的位置:首页 > 其它

使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: