`

log4j配置简要说明

    博客分类:
  • JSP
阅读更多
虽然以前一直在用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

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定义会导致这样的情况。
最后以一幅图来概括:


分享到:
评论

相关推荐

    log4j-user-guide

    16. 扩展Log4j配置(ExtendingLog4jConfiguration):这部分可能是关于如何通过编程方式扩展Log4j配置的详细信息。 17. 自定义日志级别(CustomLogLevels):Log4j允许创建自定义日志级别来满足特定的日志需求。 ...

    log4jxml详细分析 例子全

    在深入探讨`log4j.xml`配置文件之前,我们先简要了解Log4j框架。Log4j是Apache的一个开放源码项目,通过使用Log4j,我们可以控制日志信息输送的目的地(控制台、文件等)、日志信息的格式,以及哪些日志信息将被输出...

    log4j-users-guide

    本章节简要介绍了 Log4j2 的历史和发展,以及它如何从一个早期项目发展成为 Java 开发者广泛使用的日志框架。Log4j2 是 Apache 软件基金会下的一个开源项目,其主要功能是提供一种灵活且高效的方式来记录应用中的...

    weblogic,log4j,druid,hibernate,spring,struts2连接泄露检测

    weblogic,log4j,druid,hibernate,spring,struts2,hutoolDb,Oracle连接池配置,连接泄露检测及简要原理说明 连接关了关,怎么用druid检测

    log4cpp-1.1.2rc5

    `log4cpp`是一款广受欢迎的C++日志库,源自Java界的`log4j`,旨在为C++开发者提供强大的日志记录功能。这款库设计灵活,易于使用,能够帮助程序员在开发过程中方便地进行调试、记录运行信息和错误跟踪。`log4cpp-...

    应用引入cat监控简要说明文档

    在`log4j.properties`配置文件中,添加`CatAppender`,以便将日志发送给CAT服务器: ``` log4j.rootCategory=INFO,app,stdout,catlog log4j.appender.cat=com.dianping.cat.log4j.CatAppender ``` 4. **监控URL...

    Spring+Struts2+iBatis简要说明

    关于iBatis的依赖库,包括`ibatis-common.jar`、`ibatis-sqlmap.jar`、`commons-logging-1.1.jar`、`log4j.jar`、`Commons-dbcp-1.2.1.jar`和`oscache-2.0.2-22Jan04.jar`。其中,`commons-logging`和`log4j`是日志...

    【MyBatis入门】—— MyBatis日志

    在MyBatis中,你需要在类路径下提供log4j.properties或log4j.xml配置文件,设置所需的日志级别和输出目的地。 2. **SLF4J(Simple Logging Facade for Java)**:这是一个日志门面,允许用户在运行时插入所需的日志...

    rexsl-page-0.12.zip

    `Log4jConvenient`可能是`Log4j2`的一个组件,`Log4j2`是`Log4j`的升级版,提供了更好的性能和更丰富的功能,包括异步日志记录、动态配置等。`Convenient`可能指的是它提供了一种更简洁、更易用的API,使得开发者...

    其他类别MeyboMail Web(Java)开源简化-meybomailweb.zip

    MeyboMail Web(Java)开源简化_meybomailweb 一、安装简要说明 1、安装JDK1.4.2以上版本(注意配置java_home路径) 2、安装tomcat 3、把本下载的全部程序文件拷贝到tomcat的webapps\...3、系统使用Log4j-1.2 作为日志系统

    JBoss Development Process Guide

    - 详细说明了如何使用 Log4j Repository Selector 来指定 log4j.xml 文件的位置。 **8.4 JDK java.util.logging** 比较了 JDK 自带的日志框架与 Log4j 的差异。 #### 八、JBoss 测试套件 测试套件是确保软件质量...

    动态网页(jsp+Servlet)

    本文将深入探讨JSP和Servlet的相关知识,以及与它们密切相关的Dom4j和Log4j,并简要提及AJAX。 首先,J2EE(Java 2 Platform, Enterprise Edition)是一个为企业级应用提供服务的平台,它包含了多种技术和规范,如...

    Grails3配置logback日志.pdf

    logback是当前流行的日志框架,它与log4j有着相同的源,并提供了更为强大的功能。本文主要介绍如何在Grails3项目中配置logback,实现日志的详细配置,包括按天生成独立的日志文件、日志格式设置以及对日志文件大小的...

    SpringBoot日志配置简单介绍

    然后,可以在 resources 目录下创建 log4j2.xml 文件来配置 Log4j2。 本文介绍了 Spring Boot 的日志配置,包括日志级别设置、日志文件路径设置、控制台输出日志格式设置等。可以根据需要选择合适的日志配置方式来...

    idea springBoot 源码

    8. **日志管理**:如Log4j或Logback,用于记录系统运行信息。 9. **异常处理**:全局异常处理机制,统一返回错误信息。 10. **单元测试**:使用JUnit或Mockito进行测试,确保代码质量。 以上就是基于给定信息的详细...

    MeyboMail Web(Java) 邮件 群发源代码

    3、系统使用Log4j-1.2 作为日志系统 三、系统设置(确保论坛程序正常运行后执行) 修改或增加WEB-INF\classes\mailserver.xml文件中的data节点的内容,可以修改或增加域名。mailserver.xml文件的data节点数据格式如下...

    struts2简要的jar包

    8. **commons-logging-api-1.1.jar**:Apache Commons Logging API提供了一个统一的日志接口,允许开发者选择不同的日志实现,如log4j、java.util.logging等。在Struts2中,这个库用来记录框架内部的调试信息和错误...

Global site tag (gtag.js) - Google Analytics