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

log4j自定义输出多个文件

    博客分类:
  • Java
阅读更多

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的配置文件(通常是`log4j.properties`或`log4j.xml`)中定义多个Appender。Appender是Log4j中负责将日志信息输出到指定目的地的组件,例如文件、控制台、网络...

    log4j多文件输出打印

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

    log4j自定义

    《深入理解Log4j自定义》 在Java开发中,日志系统扮演着至关重要的角色,它能够帮助我们记录程序运行过程中的各种信息,便于调试、监控和问题排查。Log4j作为一款广泛使用的日志框架,其强大的可配置性和自定义能力...

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

    Log4j提供了一个名为`org.apache.log4j.ConsoleAppender`的类,用于将日志输出到控制台,我们可以通过自定义Filter或者继承现有Appender来实现这个功能。 下面是一个简单的示例,展示如何在Log4j配置文件中设置...

    java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    本文将详细讲解如何使用Log4j实现自定义日志输出到多个文件。 首先,Log4j的核心概念是`Logger`和`Appender`。`Logger`负责生成日志事件,而`Appender`则负责处理这些事件,例如将其写入文件、控制台或其他输出目的...

    Log4j2实现不同线程不同级别日志输出到不同的文件中

    - 要实现不同线程的日志分别输出,我们需要创建一个自定义的Log4j2配置文件(通常为`.xml`或`.json`格式)。配置文件中,我们可以定义多个Appenders(输出目的地),每个Appender可以关联不同的日志级别和线程上...

    log4j多文件目标输出

    除了基础的多文件输出,Log4j还支持更复杂的配置,如异步日志、自定义日志等级、归档策略(如按大小或时间滚动)、以及与其他系统的集成(如发送日志到ELK栈、Sentry等)。 六、总结 理解并熟练运用Log4j的多文件...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    在`log4j.properties`中,可能会定义多个Appender,比如将日志输出到控制台(ConsoleAppender)和文件(FileAppender)。 3. **Layouts**: Layout定义了日志信息的格式。常见的Layout有PatternLayout,可以自定义...

    log4j配置 输出日志 案例

    `log4j配置输出日志案例.doc`文档中应该包含了更详细的配置和实际运行案例,包括如何调整日志级别、设置过滤器、自定义日志格式等。这些案例可以帮助读者更好地理解和应用log4j,解决实际开发中的日志管理问题。 ##...

    log4j多个简单实例

    本篇文章将深入探讨Log4j的多个简单实例,帮助你理解和掌握其基本用法。 首先,Log4j由三个主要组件构成:配置器(Configuration)、日志器(Logger)和布局(Layout)。配置器定义了日志信息的输出格式和位置;...

    动态设置log4j的日志级别

    Log4j提供了多个日志级别,从低到高依次为:DEBUG、INFO、WARN、ERROR和FATAL。不同的日志级别用于记录不同程度的信息,例如DEBUG用于调试,INFO用于常规信息,WARN用于警告,ERROR和FATAL则用于严重错误。动态设置...

    Log4J_全能配置文件.pdf

    - `log4j.appender.FILE=org.apache.log4j.FileAppender`:指定了名为`FILE`的appender用于文件输出。 - `log4j.appender.FILE.File=file.log`:指定日志文件名称为`file.log`。 - `log4j.appender.FILE.Append=...

    Log4Cpp日志输出至文件组件最佳实践

    配置文件可以包含多个Appender,不同级别的日志可以输出到不同的文件,或者通过Filter进一步控制日志输出。 总结起来,Log4Cpp提供了一套强大的日志系统,通过灵活的配置,可以在C++项目中实现高效、易管理的日志...

    自定义异常和log4j的使用

    2. 创建配置文件:在项目根目录下创建一个名为`log4j.properties`或`log4j.xml`的配置文件。例如,以下是一个简单的`log4j.properties`配置: ``` log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org....

    示范如何在android工程中使用log4j记录日志

    Log4j是一个广泛使用的Java日志框架,它提供了强大的日志处理功能,包括日志级别控制、自定义日志格式、多路复用等。然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文...

    Log - Log4j - log4j.properties配置文件

    `log4j.properties`配置文件是Log4j的核心,它定义了日志输出的行为,包括日志级别、输出目的地、格式等。以下是一些关键的配置选项: 1. **日志级别(Level)**:日志级别包括DEBUG、INFO、WARN、ERROR和FATAL。...

    log4j生成带时间戳的日志文件(包括extras包以及简单demo)

    - **配置文件**:Log4j通过配置文件(通常是log4j.properties或log4j.xml)来定义日志行为,包括日志输出位置、格式、级别等。 2. **生成带时间戳的日志** 在Log4j中,我们可以自定义日志格式来包含时间戳。例如...

    log4j的详细配置,log4j.xml和log4j.properties,日志输出到文件,邮件,数据库,控制台等

    - **日志级别**:Log4j支持多个日志级别,从低到高分别是TRACE, DEBUG, INFO, WARN, ERROR, FATAL。在配置文件中,可以设置每个logger或root logger的级别,控制输出的日志级别。 4. **日志输出格式** - **...

    Tomcat 8.0.30 log4j配置

    - `log4j.appender.FILE.File`:设置日志文件的输出路径。 - `log4j.appender.FILE.layout`:设置日志布局模式,这里使用了PatternLayout。 - `log4j.appender.FILE.layout.ConversionPattern`:定义日志输出的...

    SpringBoot框架配置log4j和log4j2的配置代码

    2. **配置文件**:创建`log4j.properties`或`log4j.xml`文件,定义日志级别和输出目的地。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, file log4j.appender.stdout=org.apache....

Global site tag (gtag.js) - Google Analytics