參考资料: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文件夹下就能够了。
 

log4j配置输出到多个日志文件(转)的更多相关文章

  1. log4j配置输出到多个日志文件

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

  2. Log4j配置的经典总结,打印日志文件,日志存库

        一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制 日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Sy ...

  3. log4j输出多个自定义日志文件,动态配置路径

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

  4. log4j每天,每小时产生一日志文件

    log4j每天,每小时产生一日志文件 2016年08月05日 14:14:33 阅读数:6254 一.之前的文章中有log4j的相关配置以及属性的介绍,下面我们先把配置列出来:   log4j.roo ...

  5. log4j配置输出日志文件

    在测试程序时,有时候运行一次可能需要很久,把日志文件保存下来是很有必要的,本文给出了scala程序输出日志文件的方式,同时使用本人的另一篇博客中介绍的将log4j.properties放到程序jar包 ...

  6. log4j分离日志输出 自定义过滤 自定义日志文件

    普通的log4j.properties 定义: ### set log levels ### log4j.rootLogger = debug,D,E ## Disable other log log ...

  7. log4j 输出原始数据到指定日志文件

    项目中需要将上传的数据输出到指定的log文件,之前对log4j缺少深入认识,普遍将整个应用的日志到输出到一个文件. 在经理的帮助下,业务数据可以直接输出到指定的log文件,现将配置及使用流程整理一下. ...

  8. log4j输出多个自定义日志文件(转)

    如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: ...

  9. log4j配置参数详解——按日志文件大小、日期切分日志文件

    项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. ...

随机推荐

  1. Latex的各种帽子

    \hat{A} \widehat{A} \tilde{A} \widetilde{A} \overline{A} \underline{A} \overbrace{A} \underbrace{A} ...

  2. IE屏蔽鼠标右键、禁止复制粘贴等功能

    <body oncontextmenu="return false" onselectstart="return false" ondragstart=& ...

  3. C++ GDI+调用

    封装了一个GDI+的使用类 GdiPluss.h #pragma once #include <comdef.h> #include <gdiplus.h> using nam ...

  4. e675. 翻转缓冲图像

    // To create a buffered image, see e666 创建缓冲图像 // Flip the image vertically AffineTransform tx = Aff ...

  5. Unity中的Transform Gizmo中的Pivot和Center

    选择中心(Center)意味着使用当前所选所有物体的共同轴心, 选择轴心(Pivot)意味着将使用各个物体的实际轴心 区别在于是否选中了多个物体或者有层级关系的物体. 第一张图是Center,中心在组 ...

  6. svn merge和branch分析

    [转载] 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的 ...

  7. MathType中公式不对齐怎么办

    MathType是一款专门用来编辑数学公式的数学公式编辑器,利用它可以在文档中快速编辑公式,与文字完美结合,可以编辑出各种各样的数学符号与公式,省下你不少的时间. 一.对齐上标与下标 MathType ...

  8. 怎样批量修改MathType公式格式

    MathType是一款数学公式编辑器,我们在写论文的时候常常会遇到,但是有时由于公式的样式.大小和间隔等不符合论文要求,这个时候我们如果一个个修改是很麻烦的,还容易出错.所以批量修改就非常的有必要了, ...

  9. [extjs] ExtJs4.2 Form 表单提交

    基本代码: <script> Ext.onReady(function(){ Ext.create('Ext.form.Panel', { title: '登录', bodyPadding ...

  10. 怎样设置table中td的高度为1px

    在制作edm时会遇到须要设置td的高度为1px,假设td标签中有 时不管你怎么设置td的高度都没用,最小高度都是18px. 这时须要把表格中的 去掉.例: 原来是这种: <tr> < ...