Log4j的配置和使用(2)

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18819.html