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

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

阅读更多
转载:
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起的那个自定义的名字!
分享到:
评论

相关推荐

    LOG4CPP多个日志文件

    在“LOG4CPP 多个日志文件”的场景下,我们主要关注如何配置LOG4CPP以将日志输出到不同的文件,如DEBUG、NOTICE、WARNING、ERROR和CRITICAL级别分别对应不同的文件。 首先,理解LOG4CPP的基本架构至关重要。LOG4CPP...

    log4j多文件目标输出

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

    log4j日志文件配置

    Log4j支持多个日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL。这些级别按照严重程度递增,DEBUG是最详细的信息,而FATAL表示严重的系统错误。根据需求,我们可以选择性地记录不同级别的信息,以便在调试或监控时...

    log4j2用户指南

    Log4j2 支持日志分离,即在一个应用程序中使用多个独立的日志记录配置: - **Separate ClassLoaders**:使用不同的类加载器隔离日志配置。 - **Separate Contexts**:每个配置使用独立的 LoggerContext。 #### 15....

    Log4j工程官方源码

    这个压缩包文件包含的是Log4j的官方源码,对于开发者来说,能够直接导入到Eclipse中进行学习和研究,或者进行二次开发,具有很高的价值。下面将详细解释Log4j的核心概念、功能以及如何在Eclipse中使用这些源码。 1....

    slf4j1.5和1.6版本架包包括api和log4j

    Log4j是一个广泛使用的日志框架,提供了丰富的配置选项和强大的日志处理能力,如自定义日志级别、配置文件、输出格式和日志目的地(如文件、控制台、电子邮件等)。 SLF4J的这种设计有以下几个优点: 1. **解耦**:...

    log4j2文档

    10. 日志分离和扩展性:Log4j2支持日志分离,允许在单个应用程序中运行多个日志记录器实例,并提供了扩展Log4j的接口,允许开发者添加额外功能。 文档中还提到了Log4j2的迁移指南,帮助开发者从Log4j1.x版本迁移到...

    log4j-users-guide

    经过无数次的改进和多个版本的迭代,这个 API 最终演化为 Log4j,并成为一个广受欢迎的 Java 日志包。Log4j2 作为 Log4j 的升级版本,在功能和性能上都有显著提升,支持更丰富的配置选项和更高的并发处理能力。 ###...

    log4j-users-guide.pdf

    Log4j 2 还利用了 Java 管理扩展(JMX)来管理日志记录系统,并提供了日志分离(Logging Separation)的机制,以支持运行在同一应用服务器上的多个应用程序共享同一个 Log4j 配置文件。 此外,Log4j 2 的扩展性非常...

    Log4j2手册阅读随笔(Log4j2新特性)

    Log4j2手册详细介绍了该库的各个方面,包括架构、迁移、API、配置、Web应用程序集成、插件、查找、Appenders、布局、过滤器、异步记录器、无垃圾日志记录、JMX、日志分离以及如何扩展Log4j。 Log4j2是E.U.SEMPER...

    slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12.jar

    配置Log4j可以通过`log4j.properties`或`log4j.xml`文件完成,其中定义了日志输出的级别、目的地、格式等参数。 总结来说,SLF4J是一个重要的日志抽象层,它简化了Java日志处理,提高了代码的可维护性和可扩展性。`...

    slf4j-api-1.6.2.jar和slf4j-log4j12-1.6.2.jar

    Log4j是Apache的一个开源项目,它提供了一种强大的、可配置的日志机制,包括日志级别控制、自定义日志格式和多种输出目的地(如文件、控制台、邮件等)。 在实际应用中,开发人员通常会在项目中引入slf4j-api.jar,...

    log4j1.2.91

    2. **配置**:Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,其中定义了日志的级别、输出位置、格式等。 例如,以下是一个简单的配置示例: ``` log4j.rootLogger=DEBUG, FILE log4j.appender.FILE=...

    Android-可保持线程日志统一输出多线程不混乱

    3. **自定义日志库**:如压缩包中的`yyb-log-master`可能就是一个自定义的日志库,它可能提供了更高级的功能,如线程安全的输出、日志分类、过滤等功能,使得在多线程环境下能够更好地管理和查看日志。 4. **使用...

    dom4j+jstl+beanUtils+log4j

    Log4j的配置文件允许开发者调整日志级别,控制输出到不同的目的地,如控制台、文件、数据库等。通过使用不同的Appender和Layout,Log4j可以定制化输出格式,满足不同项目的日志需求。 这四个库的集合开发包文件为...

    log4js for nodejs

    **Log4js还支持多模块日志,每个模块可以有自己的日志级别和输出配置,这样可以更好地管理和分离不同部分的日志信息。** **总结来说,Log4js为Node.js应用程序提供了一套全面的日志解决方案,不仅能够满足基本的...

    通过DriverManager类提供的方法控制日志输出

    例如,很多驱动都支持通过`log4j.properties`或`log4j.xml`配置文件控制日志输出。 4. **自定义日志处理器**:如果上述方法不能满足需求,你还可以通过实现`java.sql.Driver`接口的`connect()`方法,对原始连接过程...

    springboot2 多数据源配置 mybatis log4j2 完整示例

    在Spring Boot中,通过配置log4j2.xml或log4j2.json文件,可以自定义日志输出级别、格式和目标。 **Swagger2** Swagger2是一个用于设计、构建、记录和使用RESTful Web服务的工具。它通过Swagger-UI和Swagger-...

Global site tag (gtag.js) - Google Analytics