`

log4j.properties配置文件配置项的简单说明(转载)

阅读更多
转载:
虽然以前一直在用log4j,但是对其配置不甚了了,突然间因为需解决某些问题,要理解log4j的配置,
然而用google搜了一下,却发现网上没有一个简单直观的说明,于是只好看log4j的官方介绍,终于
理解了log4j的配置用法,以下是我对log4j配置的一点认识,如有谬误还请不吝赐教. 
首先我们搞清楚log4j能干什么,简单来说就是提供一个记录不同级别信息内容的日志工具,
可以把不同级别,不同包路径的信息,以指定格式输出到多种设备(控制台,文件等)
在程序中,可以以以下方式来使用
   Log log = org.apache.commons.logging.LogFactory.LogFactory.getLog(yourClassName.class);
  log.debug("debug message -------------------");
  log.info("info message ******************");
  log.warn("warn message +++++++++++++++");
  log.error("error msg================="); 
  
本文主要讲的是如何配置log4j,先让我们先看看一个典型的log4j配置:   

==========log4j.properties==================

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n

log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.fileout.MaxBackupIndex=10
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

log4j.rootCategory=INFO, stdout, fileout
log4j.logger.com.wolfsquare.log2=DEBUG,stdout
===================================

这个文件可以划为三小块

===========第一块定义了一个名为 stdout 的appender和layout (appender,layout的概念后面再解释,目前先记着有这样两个名词):

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义stdout的实际输出实现类,从这个appender实现类名可以猜到,这个类是负责控制台输出的。
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
定义stdout的输出装饰器
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
装饰器参数配置


============第二块定义了一个名为 fileout 的appender和layout:
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
同理可猜这个实现类是输出到文件的
log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.fileout.MaxBackupIndex=10
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

============第三块定义了名字分别为rootCategory,log4j.logger.com.wolfsquare.log2的两个logger
log4j.rootCategory=INFO, stdout, fileout
log4j.logger.com.wolfsquare.log2=DEBUG,stdout(以前是log4j.category,现在换成log4j.logger了,经测试 两个都是可以的)

]rootCategory logger是缺省的logger,记录所有的包的信息输出。
第二个logger是只输出指定包com.wolfsquare.log2下的日志信息。那么INFO,DEBUG又是什么意思呢,他们是信息的分级标识,通过继承实现这个实现自定义级别的分级。
第三块配置两句的意思是这样的:
rootCategory 把所有类的INFO级别以上的信息输出到stdout和fileout两个appender中,
logger.com.wolfsquare.log2,把com.wolfsquare.log2包中的所有类(包括子包)DEBUG级别(含)以上的信息输出到stdout 中
一个logger可以输出到很多个设备中(appender),如果需要增加输出设备则用分号分隔开appender名称即可。

输出信息的分类级别是DEBUG > INFO > WARN > ERROR,信息细节由细到粗,指定输出某一级别的信息时,
过细的信息输出将会被忽略

如果一个配置中有多个logger,他们之间会有什么关系呢?答案是,在输出上,他们没有任何关系,都是独立运作的,
不相关的,但是在配置上,父包的配置会传给子包,如果子包没有另外定义配置的话。
例如上面配置文件中的两个logger:
log4j.logger.com.wolfsquare
log4j.logger.com.wolfsquare.log2

这里认为 log4j.logger.com.wolfsquare.log2 继承自 log4j.logger.com.wolfsquare,他们的配置声明如下:
log4j.rootCategory=INFO, stdout, fileout
log4j.logger.com.wolfsquare.log2=,stdout
注意第二句没有指定输出级别,那么根据配置继承规则会继承父logger的配置,在这里就是INFO。

同时需要强调的是,如果两个logger有继承关系,且输出到同一个appender,根据输出独立原则,那么将会出现两行一样的信息,
例如上面的两个logger定义会导致这样的情况。
最后以一幅图来概括:

  • 大小: 7.3 KB
分享到:
评论

相关推荐

    配置Log4J的一般步骤

    首先下载log4j.jar,放在WEB-INF/lib下,然后新建一个log4j.properties文件。在文件中配置已下配置项。 1. 配置Logger组件 2. 配置Appender组件 3. 配置Layout组件 Logger log = Logger.getLogger(this.getClass()); ...

    Log4j日志根据模块不同输出到不同的日志文件开发配置,便于监控项目各功能模块的运行情况

    文件中内容包括模块中某个类单独输出到一个日志文件中、模块中某个package单独输出到一个日志文件中、同一模块不同package输出到一个日志文件中三种情况下log4j.properties配置项配置事例、Java类中代码如何一致编写...

    stackify-log-log4j12:适用于Log4j 1.2的Stackify Log Appender

    Stackify Log4j 1.2记录器Log4j 1.2附加程序,用于将日志消息和异常发送到Stackify。 错误和日志概述: : 注册....properties文件): log4j.appender.STACKIFY =com.stackify.log.log4j12.StackifyLogAppenderlog4j.ap

    微信开发框架wechat4j

    wechat4j.properties配置文件的详细配置项意义参见[wechat4j配置文件解读](https://github.com/sword-org/wechat4j/wiki/wechat4j%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E8%AF%BB) 通过以上步骤,你的微信...

    Apache安装及JBOSS部署说明文档.rar

    2.2.8日志配置,配置log4j.xml 18 2.2.9配置contentType及charset,TOMCAT5.0下JSP统一配置 19 2.3 JVM最小、最大内存的设定 21 2.4 OS字符集问题 21 2.5 JBOSS服务的启动、停止 21 3.附apache https 服务器的...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Interpolation of Properties in Dependency Output Location 12.5.4.3. Including and Excluding Dependencies by Scope 12.5.4.4. Fine Tuning: Dependency Includes and Excludes 12.5.4.5. Transitive ...

    R2高性能数据库连接池v1.6源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。...

    R2高性能数据库连接池v1.7源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    java8源码-private-cloud-storage:一个简单实用的云存储服务器

    日志配置文件位于:src/main/resources/log4j.properties 可以脱离Tomcat环境,直接打包为Jar包,使用Maven的Package命令即可 功能介绍 文件上传、下载:支持文件的上传下载,上传时通过文件内容MD5来防止重复源文件...

    gorm-standalone-example-2_4_x:Gorm独立示例-Spring Boot

    配置( src/main/resources/log4j.properties ) 陷阱 依赖关系解析和GORM(某些特定的GORM版本可能会发现某些Spring Framework版本中缺少的方法) 其他依赖项问题取决于Grails(grails-bootstrap),Sprin

    R2高性能数据库连接池v1.8改进版源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    R2高性能数据库连接池v1.8源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    ZendFramework中文文档

    7.13.4. 从 0.6.0 移植到 0.8.0 或更新的版本 7.13.5. 从 0.2.0 或以前的版本移植到 0.6.0 8. Zend_Currency 8.1. Zend_Currency 简介 8.1.1. 为什么使用 Zend_Currency ? 8.2. 如何使用货币 8.2.1. 从货币...

    Windows7系统IIS7+Tomcat集成

    在 tomcat 的配置文件 server.xml 文件中添加以下这句话可以更改 tomcat 的默认目录: ”” docBase=”e:\tomcat”(此处为你的网站根目录,通 过这句话的映射,可以将原先的默认更改为新的目录) debug=”0”/> ...

    windows_server2003+tomcat+iis6整合

    1.在Tomcat的conf下导入文件workers.properties,如果没建立,则手动建立文件workers.properties workers.properties内容如下(请更成换你自己的Tomcat和J2SE(jdk)目录: # tomcat物理路径 workers.tomcat_home=D:\...

    stackify-api-java:适用于Java的Stackify API

    适用于Java的Stackify API 错误和日志概述: : ...您需要在类路径上的stackify-api.properties文件中定义Log API所需的配置: stackify.apiKey=YOUR_API_KEY stackify.application=YOUR_APPLICATION_NA

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    Java学习笔记-个人整理的

    {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}...

    【分布式事务----LCN】LCN原理及使用方式.docx

    修改txlcn-tm的配置文件application.properties ####################### 服务 ################################## ########## spring.application.name=TransactionManager server.port=7970 ##########...

Global site tag (gtag.js) - Google Analytics