Log4j的多文件配置
有的时候,日志不可能只是记录一个事情,可能还要记录其他的义务数据,但是又不能记录到一个文件中,如果这样的话,就太乱了,最好就是分类记录,这样的话,想看什么数据,就看什么文件就好了啊。Log4j这么使用也很简单:
首先,看一下log4j的配置文件
log4j.rootLogger=INFO
log4j.logger.errorlog= ERROR, error
log4j.logger.paylog = INFO, pay
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = G:/test/ error.log
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %n%d%p[%c]-%m
log4j.appender.errorlog.MaxFileSize=10240KB
log4j.appender.pay = org.apache.log4j.DailyRollingFileAppender
log4j.appender.pay.File = G:/test/paylog.log
log4j.appender.pay.DatePattern='.'yyyy-MM-dd
log4j.appender.pay.Append = true
log4j.appender.pay.Threshold = INFO
log4j.appender.pay.layout = org.apache.log4j.PatternLayout
log4j.appender.pay.layout.ConversionPattern = %n%d%p[%c]-%m
log4j.appender.paylog.MaxFileSize=1024000KB
上面的配置,跟一开始的配置差不多,就是多定义了两个 logger,在后台记录的时候,根据这个logger获取记录日志源,然后分别取记录到不同的文件中
下面是Java代码:
package com.zy.ywyd.gameoperators.until;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public classLog {
//Logger实例
publicLogger loger;
publicLogger errrorloger;
publicLogger paylogger;
//将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用
privatestaticLog log;
privatestaticString str;
//构造函数,用于初始化Logger配置需要的属性
privateLog()
{
//获得当前目录路径
String filePath=this.getClass().getResource("/").getPath();
//找到log4j.properties配置文件所在的目录(已经创建好)
filePath=filePath.substring(1).replace("bin", "src");
//获得日志类loger的实例
loger=Logger.getLogger(this.getClass());
errrorloger = Logger.getLogger("errorlog");
paylogger = Logger.getLogger("paylog");
//loger所需的配置文件路径
PropertyConfigurator.configure("/"+filePath+"log4j.properties");
str = filePath;
}
publicstaticLog getLoger()
{
if(log!=null)
return log;
else
return new Log();
}
//测试函数
publicstaticvoidmain(String args[])
{
Log logc = Log.getLoger();
logc.errrorloger.error("error,error,errorqqq");
logc.paylogger.info("info info info wwww");
}
//记录错误日志
publicstaticvoiderrorLog(Exception e){
Log log=Log.getLoger();
System.out.println(str);
log.errrorloger.error(e.getMessage(), e);
}
//记录回复日志
publicstaticvoidpayLog(String msg){
Log log=Log.getLoger();
System.out.println(str);
log.paylogger.error(msg);
}
}