`

日志管理使用方法log4j

    博客分类:
  • java
阅读更多

之前使用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日志管理

    log4j日志管理log4j日志管理log4j日志管理log4j日志管理log4j日志管理

    kettle使用log4j管理输出日志

    参照了几个网上大神配置,部分教程的描述有误,最终调试完成,可以实现kettle日志输出,测试版本...需要替换的文件为,Kettle的程序目录下data-integration-6.0\plugins\kettle5-log4j-plugin中有一个log4j.xml文件。

    Log4j日志管理系统简单使用说明

     以上是从原理方面说明Log4j的使用方法,在具体Java编程使用Log4j可以参照以下示例:    1、 建立Logger实例:  语法表示:public static Logger getLogger( String name)  实际使用:static Logger logger = ...

    tomcat下的log4j日志配置

    tomcat下的log4j日志配置,给tomcat配置log4j有好几种方法,我知道的有: 一、tomcat级别的统一日志管理 二、每个webapp分别配置log4j

    log4cpp--C++的一个强大的日志管理类(log4j很相似)使用示例

    这个源文件展示了C++下的日志管理类log4cpp的使用方法,当然log4cpp是一个很强大的管理工具,所以只是演示了一些最常用的方法。

    log4j 日志服务器

    log4j 日志服务器 一个系统可能有多个子系统组成,这些子系统都有自己的日志,并且运行在不同的操作系统和主机上,收集这些日志对运营人员来说也比较困难。 因此决定在平台中采用日志服务器来做到集中日志管理,平台...

    Log4j日志管理系统简单使用说明1

    Log4j日志管理系统简单使用说明1

    SpringBoot中使用log4j进行日志管理示例源码

    SpringBoot中使用log4j进行日志管理示例源码

    Java 日志管理+log4j

    本项目既有对Java本身Logger的使用还有对log4j的使用.

    log4j日志管理安装使用文档

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。

    Log4j日志管理

    Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能...

    日志管理Log4j学习笔记

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信 送的目的地是控制台、文件、 GUI 组件、甚至是套接口服务器、 NT 的事件记录器、 X Syslog 守护进程等;我们也可以控制每一条日志的...

    log4j-1.2.16

    log4j,日志管理,apache log4j

    log4j2.xml

    使用log4j2.xml实现对日志的精准控制,对整个开发过程百利有之!但是也要也要注意使用的误区,具体可才看本博客下的Java异常和日志管理!

    Kafka+Log4j实现日志集中管理

    Kafka及Log4j实现日志集中管理功能的相关程序代码,了解kafka工作原理

    日志管理--Log4J简明教程

    Log4J是对日志的自我控制,你在调试或项目开发中都会感到他的作用。

    Log4J系统日志全面详解

    这是一个简单的系统日志管理,通过使用Apache的这个开源项目,可以方便的解决我们的日志,它可以输出日志到数据库,文件,邮箱..等。

    Apache的Log4J日志管理类库jar包

    java后台开发常用的类库jar包,为了方便大家查找下载,免去网上到处乱找

Global site tag (gtag.js) - Google Analytics