日志管理使用方法log4j

之前使用lo4j的日志管理,但是一直没有总结和记录下来,现在有时间就记录一下

log4j使用主要分为3个部分:1环境configurator的配置,2项目中logger的日志信息记录3.属性文件的具体配置

 

1和2使用实例代表,其使用非常简单,在spring,struts2,mybatis,hibernate具有使用,你在使用框架的时候其实已经在记录这些日志,操作非常简单

1:configurator为basicconfigutor,PropertyConfigurator ,DOMConfigurator三中,具体为下代码(均使用绝对路径,项目中不要这么做)

package log;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;

public class Logtest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Logtest testlog=new Logtest();
        testlog.getDoucment();
    }
    //最简单的处理方式,默认加载log4j的属性文件log4j.properties,什么操作都不需要
    public void getbasic(){
        BasicConfigurator.configure();
        Logger log =Logger.getLogger(this.getClass());
        log.debug("1dfekf");
        log.warn("1warn");
    }
    //其实在项目中使用propertiesconfigurator主要配置不同log4j.properties属性文件,其动态修改不会很多,就算修改,也是直接改,在configure中定期读取就可以了
    //而其中使用的properties并不是log4j的,是jsk自带处理属性文件,如struts.properties,功能是很强大,但是用的少
    public void getproperty() throws IOException{
        File file=new File("D:/workplace/new_workplace/test/src/log4j.properties");//仅供测试所用,此路径不能在项目中使用
        FileInputStream input=new FileInputStream(file);
        Properties pro=new Properties();
        pro.load(input);//通过properties属性来进行动态修改properties文件
        input.close();
       
        System.out.println(pro.getProperty("log4j.appender.R"));//获取日志属性
        System.out.println(pro.containsKey("log4j.appender.R"));//判断属性是否存在

        pro.setProperty("log4j.appender.R.File", "D:/workplace/new_workplace/test/src/logtest.txt");//动态修改属性文件
        //如需要本地保存,则将结合输出流
        FileOutputStream output=new FileOutputStream(file);
        pro.store(output, "本地保存");
        output.close();
       
        PropertyConfigurator.configure(pro);//日志环境配置确认
        Logger log =Logger.getLogger(this.getClass());//日志记录
        log.debug("2dfekf");
        log.warn("2warn");
        log.error("eor");
   
       
    }
    //这个应该是用来解析log的xml形式的属性配置,说实话,我没碰到到项目中使用这种方式
    public void getDoucment(){
        DOMConfigurator.configure("D:/workplace/new_workplace/test/src/log4js.xml");
       
        Logger log =Logger.getLogger(this.getClass());
        log.debug("3dfekf");
        log.warn("3warn");
        log.info("3info");
        log.error("3error");
        log.fatal("3fatol");
       
    }
   
    public static String getpath(){
        return Logtest.class.getResource("/").toString();
    }
   
}

log4j.properties

 

#\u672C\u5730\u4FDD\u5B58
#Tue Apr 29 19:19:23 CST 2014
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
log4j.appender.R.File=D\:/workplace/new_workplace/test/src/logt.txt
log4j.rootLogger=DEBUG, A1 ,R
log4j.appender.R.MaxFileSize=250KB log4j.appender.R.MaxBackupIndex\=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.R=org.apache.log4j.RollingFileAppender

 

log4j.xml

 

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> 
 
    <!-- ========================== 自定义输出格式说明================================ --> 
      <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL --> 
      <!-- %r 输出自应用启动到输出该log信息耗费的毫秒数  --> 
      <!-- %c 输出所属的类目,通常就是所在类的全名 --> 
      <!-- %t 输出产生该日志事件的线程名 --> 
      <!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” --> 
      <!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  --> 
      <!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)  --> 
      <!-- ========================================================================== --> 
 
      <!-- ========================== 输出方式说明================================ --> 
      <!-- Log4j提供的appender有以下几种:  --> 
      <!-- org.apache.log4j.ConsoleAppender(控制台),  --> 
      <!-- org.apache.log4j.FileAppender(文件),  --> 
      <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), --> 
      <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  --> 
      <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   --> 
  <!-- ========================================================================== --> 
 
 
  <!-- 输出到日志文件  --> 
    <appender name="log4jTestDebug" class="org.apache.log4j.RollingFileAppender"> 
        <param name="File" value="D:\\workplace\\new_workplace\\test\\src\\logxml.txt"/> 
        <param name="Append" value="true"/> 
        <param name="MaxFileSize" value="5KB"/> 
        <param name="MaxBackupIndex" value="2"/> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/> 
        </layout> 
        <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
            <param name="LevelMin" value="DEBUG"/> 
            <param name="LevelMax" value="DEBUG"/> 
        </filter> 
    </appender> 
 
        <appender name="log4jTestLogInfo" class="org.apache.log4j.RollingFileAppender"> 
        <param name="File" value="D:\\workplace\\new_workplace\\test\\src\\logxml.txt"/> 
        <param name="Append" value="true"/> 
        <param name="MaxFileSize" value="5KB"/> 
        <param name="MaxBackupIndex" value="2"/> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/> 
        </layout> 
        <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
            <param name="LevelMin" value="INFO"/> 
            <param name="LevelMax" value="INFO"/> 
        </filter> 
 
    </appender> 
 
 
       <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中--> 
        <category name="com.gzy"> 
            <priority value="debug" /> 
            <appender-ref ref="log4jTestLogInfo" /> 
            <appender-ref ref="log4jTestDebug" /> 
        </category> 
     
    <root> 
        <priority value="debug"/> 
    </root> 
</log4j:configuration> 

 

3具体属性文件配置,我没有把握好,这里就引入一个其他人写好的,非常不错,具体网址忘了

    log4j.rootLogger=DEBUG,A1,A3,E,W,I,D 
    #?????????? 
    log4j.logger.com.log4j.test=DEBUG,PKG    
     
    log4j.appender.A1=org.apache.log4j.lf5.LF5Appender 
    log4j.appender.A1.MaxNumberOfRecords=700 
     
    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender 
    log4j.appender.A4.file=${catalina.home}/webapps/game/log/d.log 
    log4j.appender.A4.DatePattern='.'yyyyMMdd 
    log4j.appender.A4.layout=org.apache.log4j.PatternLayout 
    log4j.appender.A4.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
    log4j.appender.A3=org.apache.log4j.RollingFileAppender 
    log4j.appender.A3.file=${catalina.home}/webapps/game/log/r.log 
    log4j.appender.A3.MaxFileSize=1024KB 
    log4j.appender.A3.MaxBackupIndex=999 
    log4j.appender.A3.layout=org.apache.log4j.PatternLayout 
    log4j.appender.A3.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
     
    log4j.appender.E=org.apache.log4j.RollingFileAppender 
    log4j.appender.E.file=${catalina.home}/webapps/game/log/error.log 
    log4j.appender.E.MaxFileSize=1024KB 
    log4j.appender.E.MaxBackupIndex=999 
     #??ERROR??????? 
    log4j.appender.E.Threshold=ERROR 
    log4j.appender.E.layout=org.apache.log4j.PatternLayout 
    log4j.appender.E.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
    log4j.appender.W=org.apache.log4j.RollingFileAppender 
    log4j.appender.W.file=${catalina.home}/webapps/game/log/warn.log 
    log4j.appender.W.MaxFileSize=1024KB 
    log4j.appender.W.MaxBackupIndex=999 
     #??WARN??????? 
    log4j.appender.W.Threshold=WARN 
    log4j.appender.W.layout=org.apache.log4j.PatternLayout 
    log4j.appender.W.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
    log4j.appender.I=org.apache.log4j.RollingFileAppender 
    log4j.appender.I.file=${catalina.home}/webapps/game/log/info.log 
    log4j.appender.I.MaxFileSize=1024KB 
    log4j.appender.I.MaxBackupIndex=999 
     #??INFO??????? 
    log4j.appender.I.Threshold=INFO 
    log4j.appender.I.layout=org.apache.log4j.PatternLayout 
    log4j.appender.I.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
    log4j.appender.D=org.apache.log4j.RollingFileAppender 
    log4j.appender.D.file=${catalina.home}/webapps/game/log/debug.log 
    log4j.appender.D.MaxFileSize=1024KB 
    log4j.appender.D.MaxBackupIndex=999 
     #??DEBUG??????? 
    log4j.appender.D.Threshold=DEBUG 
    log4j.appender.D.layout=org.apache.log4j.PatternLayout 
    log4j.appender.D.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 
     
    #????Appender 
    log4j.appender.PKG=org.apache.log4j.RollingFileAppender 
    log4j.appender.PKG.file=${catalina.home}/webapps/game/log/pkg.log 
    log4j.appender.PKG.MaxFileSize=1024KB 
    log4j.appender.PKG.MaxBackupIndex=999 
    log4j.appender.PKG.layout=org.apache.log4j.PatternLayout 
    log4j.appender.PKG.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n 

 

 

你可能感兴趣的:(log4j)