在Log4J中存在几个概念首先介绍一下,最最重要的两个是Logger和Appender(请参考Log4J手册),其实是继承层次以及输出控制。
首先,Log4J中总是存在一个rootLogger,即使没有显示配置也是存在的,并且默认输出级别为DEBUG。其它的logger都继承自这个rootLogger(如果其他logger未单独定义其输出级别)。
其次,Log4J中的层次是用'.'来分隔的,如log4j.logger.com.example.test,这里并不是说log4j.logger后面一定是具体的包名乃至类名,这个名称可以自定义,我们甚至可以定义一个log4j.logger.A.B.C, 在类里取名称为A.B的logger,如:
Logger logger = Logger.getLogger("A.B")
上例中我们建立了3个logger实例,它们分别是"A"、"A.B"、"A.B.C"。每次我们在系统中取得logger时,并不是新建实例,这些实例是系统启动的时候就按照配置文件初始化好的(也可能是第一次引用的时候建立的,然后缓存其实例供以后使用,这部分还没有时间研究)。
限制appender叠加性
例1:未限制叠加
log4j.rootLogger=DEBUG, Console
log4j.logger.A=DEBUG, Console
log4j.logger.A.B=INFO, Console
对于logger A.B输出的任何日志会往控制台输出三次,原因是A.B继承A的以及A的父logger的所有appender,
这种继承关系仅仅是把父logger的appender添加到自己的appender列表中,父logger的输出level不会影响
子logger的输出。
例2:限制appender叠加
log4j.rootLogger=DEBUG, Console
log4j.logger.A=DEBUG, Console
log4j.logger.A.B=INFO, Console
log4j.additivity.A.B=false
logger A.B的日志仅会输出到自己Console中,不会继承任何父logger的appender。
控制appender的输出级别
若想对输出到appender中的日志级别进行限制的话,就需要用到threshold来控制。
log4j.threshold=ERROR
用来控制所有的appender,即输出到所有appender的日志,不管原来是什么级别的,都不能低于threshold所规定的级别。
log4j.appender.Console.threshold=ERROR
用来控制指定的appender的输出级别。
分享到:
相关推荐
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
**日志框架Log4j详解** 在Java编程中,日志记录是不可...理解和熟练使用Log4j,对于提升Java应用的调试和维护效率有着重要作用。在实际项目中,根据需求选择合适的配置和使用方式,可以使日志记录更加高效和有针对性。
通常,一本完整的手册会包括以下几个部分:介绍Log4j的基础知识、详细说明如何配置和使用Log4j、示例和最佳实践、高级配置技巧、性能优化建议、以及Log4j的二次开发等方面内容。读者可以根据个人需要,找到对应章节...
本文将深入探讨log4j-1.2.17.jar及其配置文件,以揭示其工作原理和应用场景。 一、Log4j简介 Log4j是一个灵活且高效的日志记录库,为Java应用程序提供了丰富的日志功能。它的设计目标是提供一个能够进行调试、性能...
Log4j作为Java领域广泛应用的日志框架,提供了强大的日志记录功能和灵活的配置。本文将深入探讨log4j的配置以及配置文件的详解。** 首先,我们要理解什么是`log4j.properties`文件。这是log4j框架的配置文件,使用...
Log4J是一款非常流行的Java日志框架,被广泛应用于各种规模的应用程序中。它提供了灵活的日志记录机制,可以将日志输出到不同的目的地,如控制台、文件、数据库等,并且支持多种格式化选项来满足不同场景的需求。...
### Log4j 架构与用法详解 #### 一、Log4j 概述 Log4j 是一款由 Apache 软件基金会维护的开放源代码项目,它提供了强大的日志记录功能,广泛应用于 Java 应用程序的开发过程中。自 1996 年以来,Log4j 经历了不断...
正确配置`log4j.properties`对于应用程序的日志管理和调试至关重要。 #### 二、日志级别 Log4j支持以下几种级别的日志输出:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。这些级别按照从高到低的顺序排列,其中OFF...
**日志框架Log4j详解** ...同时,`log4j.xml`文件可以提供更高级的配置示例,如自定义Appender和过滤器。不断探索和实践,你将能够充分利用Log4j的强大功能,为你的Java项目带来更高效的日志管理。
此外,手册还可能涉及自定义布局、过滤器、触发策略等高级特性,这些功能使得log4j能够适应各种复杂的需求。例如,通过使用PatternLayout,你可以自定义日志信息的输出格式;使用Filters可以进一步筛选要记录的日志...
Apache Log4j是Java平台上的一个开源日志记录框架,它在软件开发领域具有广泛的应用,特别是在Java企业级应用中。Log4j为开发者提供了灵活的日志记录方案,使得程序在运行过程中可以方便地输出调试信息、警告消息...
相较于简单的打印语句,Log4j提供了更为高级的功能,比如能够根据不同的级别过滤日志消息、支持多种输出方式以及自定义日志格式等。Log4j的设计目的是为了帮助开发者更容易地记录日志信息,同时也方便系统管理员对...
本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...
**日志系统的重要性** 在软件开发中,日志系统扮演着至关重要的角色。它记录了程序运行时的各种信息,如错误、警告、调试信息等,帮助开发者追踪问题、...在实践中不断探索,你会发现更多Log4j的高级特性和应用场景。
除了基础功能,Log4j还支持更高级的特性,如自定义日志格式、异步日志记录、过滤器等。同时,Log4j2作为Log4j的升级版,提供了更多的性能优化和新的特性。 总结,Log4j是Java开发中的必备工具,通过合理的配置和...
除了基本的日志记录,Log4j还支持自定义Appender和Layout,以及Filter和LayoutWrapper等高级特性,以满足更复杂的需求。例如,可以使用SMTPAppender发送错误日志邮件,或者使用PatternLayout自定义日志输出格式。 ...
Spring Boot、MyBatis和Log4j2是三个常见的开源框架,它们分别在应用程序开发的不同方面提供了强大的支持。本项目将Spring Boot与MyBatis集成,同时舍弃了Spring Boot默认的日志系统Logback,转而采用Log4j2来实现...
四、Log4j的高级特性 1. 自定义Appender和Layout:Log4j允许开发自定义的Appender和Layout,以满足特殊需求,如发送日志邮件、写入特殊格式的文件等。 2. 异步日志:通过AsyncAppender,可以实现日志输出的异步化...