Log4J 一直是我们首选的日志框架,但其一直有个不便之处。当记录 DEBUG 日志时,我们常用以下语句:
if (LOG.isDebugEnabled()) {
LOG.debug("...");
}
在这里,if 是个很恼人的判断语句。如果我们去掉 if,那便会导致不必要的日志消息渲染。这所导致的性能损耗并不是可以完全忽略不计的,某些情况下还有可能导致严重的性能问题。但如果我们留着 if,这又会污染我们的代码,使得其不再干净整洁。而且,当使用 PMD 等代码质量检查工具时,这样的 if 会使代码的圈复杂度变高。
当使用 SLF4J 时,如此问题便不会再骚扰我们。
LOG.debug("...{}...", param1, param2);
LOG.debug("...{}...{}", param1, param2);
LOG.debug("...{}...{}...{}", new Object[]{p1, p2, p3});
因为 SLF4J 使用类似于 java.text.MessageFormat 的字符串渲染方式,我们不必在使用 if 来判断是什么日记级别了。
PS. SLF4J 在 ServiceMix 中工作良好。
分享到:
相关推荐
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它的设计目的是为各种日志框架提供一个统一的接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,比如从Log4j切换到Logback,或者...
4. **代码修改**:在代码中,使用SLF4J的`LoggerFactory.getLogger()`方法代替commons-logging的`LogFactory.getLog()`方法获取logger实例。 通过这样的桥接,我们可以保持原有的代码结构不变,同时享受到SLF4J带来...
3. **绑定日志实现**:在项目中,需要通过jar依赖或配置文件将SLF4J与具体的日志实现绑定,例如使用`slf4j-log4j12.jar`将SLF4J与Log4j结合。 四、整合与应用 1. **环境配置**:在项目中引入Hibernate 3.3.2、...
6. **slf4j-api.jar** 和 **slf4j-log4j12.jar**:SLF4J(Simple Logging Facade for Java)是日志抽象层,它允许你在项目中使用不同的日志实现。slf4j-log4j12.jar是SLF4J的Log4j绑定,这意味着日志记录将通过Log4j...
具体使用方法需参照`Spring使用logback代替log4j.txt`文件的说明。 7. **注意事项** - 配置文件的路径和名称应与Spring配置一致,否则Spring可能无法正确加载。 - 调整日志级别时,要注意不要过度记录,以免影响...
在本文档中,我们使用SLF4J来记录日志,并使用Log4j来管理日志输出。 知识点十:iBatis3SQLSessionFactoryBean的使用 iBatis3SQLSessionFactoryBean是一个用于创建iBatis的SessionFactory的Bean。在本文档中,我们...
<artifactId>slf4j-log4j12 ${slf4j.version} ``` ##### 3.2 配置文件 SSM整合需要配置多个文件,主要包括: - **spring-mybatis.xml**:Spring和MyBatis的相关配置,包括数据源、事务管理器等。 - **spring-...
- **使用 SLF4J 与 Log4j 或 Logback**:解释了如何将 SLF4J 作为日志门面与 Log4j 或 Logback 结合使用。 - **使用 JUL (java.util.logging)**:介绍如何配置 JUL 以与 Spring 兼容。 - **WebSphere 上的 ...
例如,Mybatis的版本为3.4.4,mybatis-spring的版本为1.3.1,可以选择使用c3p0或Druid作为数据源,日志库使用slf4j和log4j,同时还需要Spring的jdbc和事务管理相关的依赖。 3. **配置全局设置**:在mybatis-config....
7. **slf4j-api**和**slf4j-log4j12**: HBase使用SLF4J作为日志接口,而具体的日志实现是Log4j,这两个jar包用于日志记录。 在Java项目中,可以通过Maven或Gradle等构建工具来管理这些依赖,也可以手动将jar包添加...
背景在日常开发中,Java日志记录通常包括选择日志外观(例如JCL和SLF4j)和日志实现(例如Log4j2和logback)。 假设您正在开发使用JAR的应用程序,该JAR利用log4j2进行日志记录。 在这种情况下,您不能选择log4j2...
5. **SLF4J (Simple Logging Facade for Java)**: Hibernate使用SLF4J作为日志抽象层,允许开发者选择任何兼容的实现,如Logback或Log4j。你需要`slf4j-api-x.x.x.jar`和具体日志实现的jar包,如`logback-classic-x....
1. **使用SLF4J API**:在应用中使用SLF4J提供的API,而不是直接使用Log4j等日志框架的API。 2. **输出异常的完整信息**:记录异常时,确保包含完整的StackTrace信息。 3. **避免多次记录日志**:在记录异常信息时,...
1. 日志规范:规定了日志级别和日志格式,提倡使用SLF4J和Log4j等日志框架,便于日志管理和问题排查。 2. 性能监控:介绍如何利用JMX、VisualVM等工具进行性能监控,及时发现和解决性能瓶颈。 七、测试 1. 单元测试...
使用SLF4J或Log4j等日志框架,便于日志管理和分析。 8. **性能优化**:避免过度优化,但在必要时要关注性能瓶颈,比如减少不必要的对象创建,避免String的频繁拼接,使用StringBuilder或StringBuffer。合理使用...
- **框架选择**:从之前的Log4j切换到SLF4J + Logback组合。 - **原因**:统一日志门面接口,提高日志记录的效率、稳定性和易用性。 - **具体变化**:删除了旧的日志配置文件`${project}src/log4j.properties`,并将...
另一个方法是通过日志框架(如Log4j或SLF4J)设置过滤器,匹配并替换特定的敏感关键字。但这可能会导致性能下降,因为每个日志输出都要进行正则匹配。 为了克服上述两种方法的局限,可以采取一种混合策略,即在...
手册建议使用SLF4J作为日志门面,结合具体的日志实现(如Log4j2)进行日志输出,合理设定日志级别,避免日志过多影响性能。 8. **设计模式**:设计模式是解决常见问题的模板。手册推荐开发者熟悉并合理应用设计模式...
BAMS 2.5 更新日志:2015-07-091、修复了日志无法输出的BUG,增加slf4j lo4j绑定,删除commons-logging,统一通过slf4j使用log4j2、更新 Excel的导入导出功能,使用SpingMVC代替Servlet接收请求,简化代码3、将Word...
6. **日志规约**:明确日志记录的目的,建议在关键流程记录日志,避免过度的日志输出,同时推荐使用统一的日志框架,如Log4j、SLF4J等。 7. **异常规约**:提倡精确捕获异常,避免使用笼统的Exception,避免在...