zoukankan      html  css  js  c++  java
  • log4j配置输出到多个日志文件(转)

    參考资料:http://logging.apache.org/log4j/1.2/manual.html

    通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中。那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的。这里以property的配置方式写。xml方式类似,想了解的,能够看官方文档。

    这里測试的项目包结构例如以下:

    log4j 主要由三部分组成:Loggers, Appenders 和Layouts,(appender 能够理解为输出的目的地)

    咱们的log4j.properties或log4j.xml 里能够配置多个logger,

    每一个logger 能够相应多个Appender,而appender和layout是一一相应的。

    以下看最简单的配置,我们配置系统rootLogger,例如以下:

     
    当中:
    1、log4j.rootLogger 这个的配置三模式为:log4j.rootLogger=level,appender1,appender2,...
    level为日志等级。关系如:DEBUG < INFO < WARN < ERROR < FATAL,等级越小能够输出比自己大的日志,如设置为debug,能够输出warn,error,等的日志。
    而紧跟在后面的是appender列表:appender1,appender2,...
    2、log4j.appender.A_console=org.apache.log4j.ConsoleAppender 指定相应的appender类,这是输出到控制台。
    3、log4j.appender.A_console.layout=org.apache.log4j.PatternLayout 。指定layout类,
    4、log4j.appender.A_console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 输出格式化。详细怎么使用能够查询PatternLayout 这个api。
    我们用一个main方法输出来看看日志打印效果
     
     
     
    配置多个appener的情况
      每一个logger能够相应多个appender,例如以下配置:
     
    这样。当我们远行App时,日志会办出到控制台和mylog.log日志文件,这是就不再贴出来了。
    配置多个logger 情况
      当我们须要对一些重要的日志进行抽取时,或系统中比較独立的模块,如专门与外部系统对接的接口。这时我们就能够配置多个logger,而实现日志分柝。便于我们的日常维护工作。

    我们以下在原来的基础上再添加两个logger ,分别为:“com.pt.test” 和“com.pt.test.intf”,命名都是用包名来定义的,看看具体的配置吧:

     
    我们注意到:新添加的两个logger 配置为:
    log4j.logger.com.pt.test=debug,A_file2   
    日志输出到:D:/test/logfile2.log
    log4j.logger.com.pt.test.intf=debug,A_file3
    日志输出到:D:/test/logfile3.log
    我们看看三个文件的日志输出内容:
    logfile1.log
     
    logfile2.log
     
    logfile3.log
     
    这时我们会发现,filelog1,filelog2,filelog3都有打印了日志内容,细心的朋友应该会发现,filelog1里包括了filelog2里的全部内容,默认情况下,子Logger会的日志会向全部父级的appender输出,假设我们不想要这种输出那么我们能够把相应的Looger的additivity属性设置为false就能够了,如:把第17行凝视打开log4j.additivity.com.pt.test=false
    这样,rootLogger就不会再有Logger "com.pt.test" 及其子包里的日志了。
     滚动生成日志文件的两种模式:
     1、使用 RollingFileAppender 。这样的模式为以大小为基准生成日志文件,配置maxFileSize来限定每一个文件大小,当超出指定大小,系统会自己主动生成下一个文件,
    如以下面所看到的的appender:
     
    2、使用DailyRollingFileAppender ,这样的模式是按时间来分割文件。能够细每种生成一个文件如:
     
    log4j.appender.A_r_date.datePattern='.'yyyy-MM-dd-HH-mm'.log' 表示每分钟就会生成一个日志文件如:
    rollFiledate.log.2014-07-12-14-09.log  rollFiledate.log.2014-07-12-14-10.log
    假设想配置每天一个日志文件则能够:log4j.appender.A_r_date.datePattern='.'yyyy-MM-dd'.log'
    web 项目中使用log4j
    我把仅仅要把写好的log4j.properties 放到src文件夹下就能够了。
     
  • 相关阅读:
    git和svn
    [Luogu] P1144 最短路计数
    [Luogu] CF280C Game on Tree
    LCA的一种优秀实现方式(倍增+dfs序)
    [Luogu] P1131 [ZJOI2007]时态同步
    [Luogu] P2285 [HNOI2004]打鼹鼠
    背包相关问题总结
    【笔记】模拟梯度下降法的实现
    【笔记】梯度下降法的简单了解
    【笔记】线性回归的可解性和更多思考及线性回归总结
  • 原文地址:https://www.cnblogs.com/haw2106/p/8880906.html
Copyright © 2011-2022 走看看