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);
    }
 
 }
