`
zhengjunwei2007_163.com
  • 浏览: 130474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

摘要 : log4j按需输出多个Logger

    博客分类:
  • JAVA
阅读更多

非原创:摘自http://wangjc-opal.iteye.com/blog/309924

 

log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。

  先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:

log4j.rootLogger=DEBUG, stdout, logfile

 

log4j.category.org.springframework=ERROR

log4j.category.org.apache=INFO

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=${myweb.root}/WEB-INF/log/myweb.log

log4j.appender.logfile.MaxFileSize=512KB

log4j.appender.logfile.MaxBackupIndex=5

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

  

如果想对不同的类输出不同的文件(cn.com.Test为例),先要在Test.java中定义:

private static Log logger = LogFactory.getLog(Test.class);

  然后在log4j.properties中加入:

log4j.logger.cn.com.Test= DEBUG, test

log4j.appender.test=org.apache.log4j.FileAppender

log4j.appender.test.File=${myweb.root}/WEB-INF/log/test.log

log4j.appender.test.layout=org.apache.log4j.PatternLayout

log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n

  也就是让cn.com.Test中的logger使用log4j.appender.test所做的配置。

 

  但是,如果在同一类中需要输出多个日志文件呢?其实道理是一样的,先在Test.java中定义:

private static Log logger1 = LogFactory.getLog("myTest1");

private static Log logger2 = LogFactory.getLog("myTest2");

  然后在log4j.properties中加入:

log4j.logger.myTest1= DEBUG, test1

log4j.appender.test1=org.apache.log4j.FileAppender

log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log

log4j.appender.test1.layout=org.apache.log4j.PatternLayout

log4j.appender.test1.layout.ConversionPattern=%d %p [%c] - %m%n

  

log4j.logger.myTest2= DEBUG, test2

log4j.appender.test2=org.apache.log4j.FileAppender

log4j.appender.test2.File=${myweb.root}/WEB-INF/log/test2.log

log4j.appender.test2.layout=org.apache.log4j.PatternLayout

log4j.appender.test2.layout.ConversionPattern=%d %p [%c] - %m%n

  也就是在用logger时给它一个自定义的名字(如这里的"myTest1"),然后在log4j.properties中做出相应配置即可。别忘了不同日志要使用不同的logger(如输出到test1.log的要用logger1.info("abc"))

 

  还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:

log4j.additivity.myTest1 = false

  它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方啦!注意这里的"myTest1"是你在程序中给logger起的那个自定义的名字!

如果你说,我只是不想同时输出这个日志到log4j.rootLogger所配置的logfile中,stdout里我还想同时输出呢!那也好办,把你的log4j.logger.myTest1 = DEBUG, test1改为下式就OK啦!

log4j.logger.myTest1=DEBUG, test1

分享到:
评论

相关推荐

    log4j多文件输出打印

    在"Log4j多文件输出打印"的场景下,我们通常会配置多个Appender,每个Appender对应一个不同的输出文件。这样,不同的日志信息可以被分别写入不同的文件,便于管理和分析。例如,在`log4j.properties`配置文件中,...

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    在这个配置中,`log4j.rootLogger`定义了全局的日志级别,这里是DEBUG。`log4j.logger.com.example.MyClass`则指定了`com.example.MyClass`这个类的日志级别为WARN,这意味着只有WARN、ERROR和FATAL级别的日志会被...

    log4j-如何将日志打印到控制台:log4j-demo.zip

    总结,Log4j是一个强大且灵活的日志框架,通过配置Appender和Layout,可以轻松地将日志输出到控制台或其他目的地。在实际开发中,根据项目的需要,可以定制不同的日志策略,从而提高问题排查的效率。理解和掌握Log4j...

    log4j2所需的jar

    2. **组件**:Log4j2主要由三个核心组件组成:Logger(日志器)、Appender(输出端)和Layout(格式化器)。Logger负责生成日志事件,Appender决定日志事件如何输出(如文件、控制台、数据库等),而Layout则控制...

    Log4j将System.out搞到log4j中输出四

    Log4j主要包括三个核心组件:Logger(日志器)、Appender(输出目的地)和Layout(格式化)。Logger负责记录日志信息,Appender定义了日志输出的目标,如文件、控制台或网络,而Layout则决定了日志信息的显示格式。 ...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    log4j按功能保存日志

    - 在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中,你可以定义多个Appender,每个Appender对应一个特定的功能或模块。 - 使用`category`或`logger`标签指定Logger的名称,这通常与你的功能模块相...

    log4j jar包

    Log4j-1.2.17是Log4j 1.x系列的一个稳定版本,尽管后续发布了Log4j 2.x,但1.2版仍被许多遗留系统和项目广泛使用。这个版本修复了一些已知的bug,提升了性能和稳定性,同时也兼容了当时的Java环境。 总结,Log4j...

    log4j配置 输出日志 案例

    在Java代码中,我们需要导入log4j的API并创建一个Logger实例来记录日志。以下是一个简单的例子: ```java import org.apache.log4j.Logger; public class LogExample { private static final Logger logger = ...

    log4j(二):动态配置日志输出路径

    Log4j主要包括三个关键部分:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger负责生成日志事件,Appender决定这些事件如何被输出(例如,写入文件、发送邮件或显示在控制台),而Layout则决定了日志...

    log4j输出多个自定义路径的日志文件小例子

    要实现输出多个自定义路径的日志文件,我们需要在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中定义多个Appender。Appender是Log4j中负责将日志信息输出到指定目的地的组件,例如文件、控制台、网络...

    log4j配置文件说明(完整版)

    Log4j 配置文件的基本结构包括三个部分:根 Logger、Appender 和 Layout。 * 根 Logger:负责处理日志记录的大部分操作。语法为:log4j.rootLogger = [level], appenderName, appenderName, … * Appender:负责...

    log4j日志报错解决办法

    首先,错误信息"log4j:WARN No appenders could be found for logger"表明Log4j找不到任何日志输出的目标,也就是没有设置日志appender。日志appender是Log4j用来定义日志输出目的地的组件,比如控制台、文件、邮件...

    log4j-API-最新稳定版本log4j-1.2.17

    标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...

    apache-log4j-1.2

    Apache Log4j是Java平台上的一个著名日志记录框架,广泛应用于各种企业级软件系统中。这个名为"apache-log4j-1.2"的压缩包文件包含了Log4j的1.2.15版本,这是一个相对较为老旧但仍然被许多遗留系统使用的版本。这个...

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    Log4j作为一款广泛使用的日志框架,历经多次迭代,现在已经发展到了Log4j2。本文将详细探讨Log4j2中的两个关键组件:log4j-api-2.17.1.jar和log4j-core-2.17.1.jar。 首先,log4j-api-2.17.1.jar是Log4j2的核心API...

    apache-log4j-2.17.0-bin.tar.gz

    1. **日志级别管理**:Log4j允许开发者定义多个日志级别,如DEBUG、INFO、WARN、ERROR和FATAL,使得开发者可以控制需要记录的信息级别,以便在调试和生产环境中进行适当的日志输出。 2. **日志布局**:Log4j提供了...

    Java Log4j所需Jar包

    Java Log4j 1,2 所需Jar包,一个完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需 要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是使用 System.out.println()无法完成的。 ...

    日志实战样例配置:log4j-demo.zip

    通常,通过导入`org.apache.log4j.Logger`并调用其静态方法`getLogger()`获取一个Logger实例,然后使用`debug()`, `info()`, `warn()`, `error()`等方法记录不同级别的日志。 3. 运行脚本或启动配置:这可能是启动...

Global site tag (gtag.js) - Google Analytics