在使用slf4j进行日志输出的时候,发现这样一个问题。
当使用如下的log level设置的时候,所有“abc.def”包中通过Logger.info()输出的日志在"STDOUT"和"ROLLING_FILE" appender中都会打印两次。("STDOUT"是控制台,"ROLLING_FILE"是自定义的日志文件。)
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="ROLLING_FILE" />
</root>
<logger name="abc.def" level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="ROLLING_FILE" />
</logger>
我考虑了一下,觉得问题的原因是:root lever logger和specific logger的打印是各自独立的,而不是我原来认为的“如果为abc.def包设定了specific logger则root level logger就不会打印(互斥)”。
因此我把配置改成了:
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<logger name="abc.def" level="INFO">
<appender-ref ref="ROLLING_FILE" />
</logger>
改完之后的日志行为是:abc.def包中的info level的日志会同时出现在"STDOUT"和"ROLLING_FILE" appender中,而其他package的日志只会出现在"STDOUT"中,这正是我想要的。
这说明:root level logger是会对所有Logger输出都有效的,而specific logger只会对设定的package生效。
分享到:
相关推荐
SLF4J(Simple Logging Facade for Java)和Log4j是Java开发中常用的日志处理框架,两者在日志管理领域各有其特点和优势。本文将深入探讨这两个框架以及它们之间的关系,以及如何通过SLF4J接口来实现Log4j的日志记录...
3. **slf4j-log4j12.jar**:这个JAR桥接了SLF4J和Log4j,如果你的系统中同时有Log4j的配置,那么SLF4J会通过这个桥接器使用Log4j进行日志记录。 4. **logback-classic.jar** 和 **logback-core.jar**:如果项目中...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个统一的接口,如Log4j、Java Util Logging、Logback等。通过SLF4J,开发者可以在不修改代码的情况下...
在Java开发领域,Hibernate、SLF4J、Log4j以及JUnit是四个非常重要的库,它们各自服务于不同的目的,但又常被一起使用以构建高效、可维护的项目。让我们来详细了解一下这些技术和它们在软件开发中的作用。 1. ...
5. **日志记录**:通过SLF4J接口记录客户端和服务器端的运行信息,便于调试和问题定位。 这个项目作为一个演示,可以帮助开发者理解如何在实际应用中结合这些技术,实现高效且可靠的网络数据传输。通过学习和实践这...
接着是"log4j-1.2.17.jar",这是Log4j的第一个版本,一个非常流行且广泛使用的日志框架。它提供了丰富的配置选项,可以控制日志输出的级别(如DEBUG、INFO、WARN、ERROR等),还可以将日志输出到文件、控制台、甚至...
【标题】"IDEA下springboot+mybatis+log4j"所涉及的知识点主要集中在Java开发环境的集成、Spring Boot框架的应用、MyBatis持久层框架的使用以及日志管理工具Log4j和SLF4J的配置与实践。 首先,IntelliJ IDEA(简称...
SLF4J(Simple Logging Facade for Java)是一个日志API,它的目的是为各种日志框架(如log4j、java.util.logging、Logback等)提供一个统一的接口。这样,用户可以在部署时根据需求自由选择具体的日志实现。`slf4j-...
`LoggerFactory.getLogger()`是Spring Boot集成的SLF4J(Simple Logging Facade for Java)框架提供的核心功能,用于获取与特定类关联的日志记录器。SLF4J作为一个抽象层,允许开发者在不修改代码的情况下切换到其他...
1. **使用SLF4J API**:在应用中使用SLF4J提供的API,而不是直接使用Log4j等日志框架的API。 2. **输出异常的完整信息**:记录异常时,确保包含完整的StackTrace信息。 3. **避免多次记录日志**:在记录异常信息时,...
4. `slf4j-api-1.6.6.jar`:这是SLF4J API的1.6.6版本,包含了SLF4J的接口定义,供应用程序使用,与具体的日志实现无关。 5. `quartz-jobs-2.2.1.jar`:这是Quartz的作业库,包含了一些预定义的Job类,这些Job可以...
2. `slf4j-api-1.5.3.jar`: SLF4J(Simple Logging Facade for Java)是一个为各种日志框架提供一个简单统一的接口,使得最终用户能够在部署的时候配置自己希望的日志框架。`slf4j-api-1.5.3.jar`是SLF4J的API库,它...
6. **slf4j-log4j12.jar**:SLF4J的日志实现之一,这里使用Log4j作为日志框架。 7. **log4j.jar**:流行的日志框架,用于记录应用运行时的信息。 8. **commons-collections.jar**:Apache Commons组件之一,提供了...
3. **Log4j和SLF4J**:Log4j是Java的日志记录框架,提供灵活的日志记录配置。SLF4J(Simple Logging Facade for Java)是一个日志门面,它为各种日志API提供一个简单统一的接口,使得最终的用户能够在部署的时候配置...
在Spring框架中,事务操作是确保数据一致性和完整性的关键组件。事务是一组逻辑上的操作集合,它们要么全部成功,要么全部失败。这个特性对于银行转账这样的典型场景尤为重要,在事务管理中,我们通常提到的ACID原则...
MBG可能使用了如Log4j、SLF4J或Java内置的日志框架,这些日志组件可以帮助我们记录MBG在生成代码过程中的详细步骤和可能出现的错误,从而优化生成过程。 除了核心功能和日志包,这个完整包还包含了工具类。这些工具...
通常会使用如Log4j或SLF4J这样的日志框架来记录应用程序的运行状态、错误信息和调试信息。 7. **JDBC封装**:JDBC(Java Database Connectivity)是Java访问数据库的标准API。框架对JDBC进行了封装,提供更简便的...
在标题中提到的"Quartz2.3.0的整合Jar包",意味着这是一个包含了Quartz库的特定版本,即2.3.0,以及可能与之兼容的其他依赖库的集合,比如描述中提到的slf4j日志框架。这个整合的Jar包是为了方便开发者快速地将...
项目中可能使用了如Log4j、Logback或Java内置的日志框架java.util.logging,配合SLF4J(Simple Logging Facade for Java)提供统一的API,方便进行日志输出的管理和调整。 在这个名为"BasicProject"的压缩包中,...
4. 可能还包括一些额外的库,如log4j或slf4j用于日志记录,commons-lang或guava提供通用工具类,以及一些数据库驱动(如mysql-connector-java)以连接特定数据库。 在使用SSH框架时,开发者首先需要配置Struts2的...