參考资料: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. Rattle:数据挖掘的界面化操作

    R语言是一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具.这里的统计计算可以是数据分析.建模或是数据挖掘等,通过无数大牛提供的软件包,可以帮我们轻松实现算法的实施. 一些读者 ...

  2. Java打印整数的二进制表示(代码与解析)

    Java打印整数的二进制表示(代码与解析) int a=-99; for(int i=0;i<32;i++){ int t=(a & 0x80000000>>>i)&g ...

  3. sizeof(数组名)和sizeof(指针)

    在做这道题时: 32位环境下,int *p=new int[10];请问sizeof(p)的值为()A.4              B.10              C.40           ...

  4. QSignalMapper Class

    /************************************************************************************** * QT QSignal ...

  5. 初识Comet技术

    一.服务器推送技术概述 服务器推送技术(Servers Push)的基础思想是将浏览器主动查询信息改为服务器主动发送信息.服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接.当服务器需要再 ...

  6. 在Terminal中的光标的使用技巧

    如何简单操作? 在 Terminal(终端) 中,有许多操作技巧,这里就介绍几个简单的. 光标 up(方向键上) 可以调出输入历史执行记录,快速执行命令 down(方向键下) 配合 up 选择历史执行 ...

  7. hadoop学习笔记之-hbase完全分布模式安装-5

    http://blog.csdn.net/lichangzai/article/details/8441975 http://blog.csdn.net/jpiverson/article/detai ...

  8. [转]查看处于被锁状态的表:v$locked_object dba_objects v$session all_objects v$sqlarea v$lock

    oracle官网当一个用户发出select..for update的错作准备对返回的结果集进行修改时,如果结果集已经被另一个会话锁定,就是发生阻塞.需要等另一个会话结束之后才可继续执行.可以通过发出 ...

  9. 转:windows 下 netsh 实现 端口映射(端口转发)

    本文转自:本文出自 “httpyuntianjxxll.spac..” 博客,请务必保留此出处http://333234.blog.51cto.com/323234/1135361 -----hapr ...

  10. 【Windows】win10应用商店被删后恢复方法!

    以管理员身份运行PowerShell,输入以下命令后回车(可直接复制粘贴): Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableD ...