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

使用 SLF4J 代替 Log4J

阅读更多

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 中工作良好。

 

 

1
1
分享到:
评论
2 楼 SSailYang 2011-10-22  
JetMah 写道
SLF4j还不能做到不需要判断isDebugEnabled(),它只是一个统一的接口,真正实现的还是log4j,你可以使用logback。

SLF4J会先调用isDebugEnabled,然后在调用debug
1 楼 JetMah 2011-10-22  
SLF4j还不能做到不需要判断isDebugEnabled(),它只是一个统一的接口,真正实现的还是log4j,你可以使用logback。

相关推荐

    slf4j日志,可以使用它代替LOG4J

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它的设计目的是为各种日志框架提供一个统一的接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,比如从Log4j切换到Logback,或者...

    commons-loggin 与 slf4j的桥接器

    4. **代码修改**:在代码中,使用SLF4J的`LoggerFactory.getLogger()`方法代替commons-logging的`LogFactory.getLog()`方法获取logger实例。 通过这样的桥接,我们可以保持原有的代码结构不变,同时享受到SLF4J带来...

    hibernate-distribution 3.3.2+annotation3.4.0+slf4j-1.5.8.rar )

    3. **绑定日志实现**:在项目中,需要通过jar依赖或配置文件将SLF4J与具体的日志实现绑定,例如使用`slf4j-log4j12.jar`将SLF4J与Log4j结合。 四、整合与应用 1. **环境配置**:在项目中引入Hibernate 3.3.2、...

    hibernate主要jar包

    6. **slf4j-api.jar** 和 **slf4j-log4j12.jar**:SLF4J(Simple Logging Facade for Java)是日志抽象层,它允许你在项目中使用不同的日志实现。slf4j-log4j12.jar是SLF4J的Log4j绑定,这意味着日志记录将通过Log4j...

    logback-ext-spring.jar

    具体使用方法需参照`Spring使用logback代替log4j.txt`文件的说明。 7. **注意事项** - 配置文件的路径和名称应与Spring配置一致,否则Spring可能无法正确加载。 - 调整日志级别时,要注意不要过度记录,以免影响...

    通向架构师的道路(第二十天)万能框架spring(二)maven结合spring与ibatis.docx

    在本文档中,我们使用SLF4J来记录日志,并使用Log4j来管理日志输出。 知识点十:iBatis3SQLSessionFactoryBean的使用 iBatis3SQLSessionFactoryBean是一个用于创建iBatis的SessionFactory的Bean。在本文档中,我们...

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    <artifactId>slf4j-log4j12 ${slf4j.version} ``` ##### 3.2 配置文件 SSM整合需要配置多个文件,主要包括: - **spring-mybatis.xml**:Spring和MyBatis的相关配置,包括数据源、事务管理器等。 - **spring-...

    Spring 4.0 官方参考手册

    - **使用 SLF4J 与 Log4j 或 Logback**:解释了如何将 SLF4J 作为日志门面与 Log4j 或 Logback 结合使用。 - **使用 JUL (java.util.logging)**:介绍如何配置 JUL 以与 Spring 兼容。 - **WebSphere 上的 ...

    SSM整合方案全套无缝整合实例

    例如,Mybatis的版本为3.4.4,mybatis-spring的版本为1.3.1,可以选择使用c3p0或Druid作为数据源,日志库使用slf4j和log4j,同时还需要Spring的jdbc和事务管理相关的依赖。 3. **配置全局设置**:在mybatis-config....

    java连接hbase的jar包

    7. **slf4j-api**和**slf4j-log4j12**: HBase使用SLF4J作为日志接口,而具体的日志实现是Log4j,这两个jar包用于日志记录。 在Java项目中,可以通过Maven或Gradle等构建工具来管理这些依赖,也可以手动将jar包添加...

    sofa-common-tools:Sofa-common-tools是一个向其他SOFA库提供一些实用程序功能的库

    背景在日常开发中,Java日志记录通常包括选择日志外观(例如JCL和SLF4j)和日志实现(例如Log4j2和logback)。 假设您正在开发使用JAR的应用程序,该JAR利用log4j2进行日志记录。 在这种情况下,您不能选择log4j2...

    hibernate需要的jar包

    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. 单元测试...

    阿里巴巴java开发规范,开发手册,编写出高质量的java代码

    使用SLF4J或Log4j等日志框架,便于日志管理和分析。 8. **性能优化**:避免过度优化,但在必要时要关注性能瓶颈,比如减少不必要的对象创建,避免String的频繁拼接,使用StringBuilder或StringBuffer。合理使用...

    蓝凌JAVA产品V16开发手册

    - **框架选择**:从之前的Log4j切换到SLF4J + Logback组合。 - **原因**:统一日志门面接口,提高日志记录的效率、稳定性和易用性。 - **具体变化**:删除了旧的日志配置文件`${project}src/log4j.properties`,并将...

    java 日志的数据脱敏的实现方法

    另一个方法是通过日志框架(如Log4j或SLF4J)设置过滤器,匹配并替换特定的敏感关键字。但这可能会导致性能下降,因为每个日志输出都要进行正则匹配。 为了克服上述两种方法的局限,可以采取一种混合策略,即在...

    阿里巴巴java开发手册-泰山版

    手册建议使用SLF4J作为日志门面,结合具体的日志实现(如Log4j2)进行日志输出,合理设定日志级别,避免日志过多影响性能。 8. **设计模式**:设计模式是解决常见问题的模板。手册推荐开发者熟悉并合理应用设计模式...

    BAMS-JAVA快速开发框架 2.5

    BAMS 2.5 更新日志:2015-07-091、修复了日志无法输出的BUG,增加slf4j lo4j绑定,删除commons-logging,统一通过slf4j使用log4j2、更新 Excel的导入导出功能,使用SpingMVC代替Servlet接收请求,简化代码3、将Word...

    阿里巴巴Java开发手册_java开发手册_阿里巴巴_

    6. **日志规约**:明确日志记录的目的,建议在关键流程记录日志,避免过度的日志输出,同时推荐使用统一的日志框架,如Log4j、SLF4J等。 7. **异常规约**:提倡精确捕获异常,避免使用笼统的Exception,避免在...

Global site tag (gtag.js) - Google Analytics