`
daiyuok
  • 浏览: 26522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

slf4j结合使用logback记录log错误日志文件

 
阅读更多

简介

slf4j(simple logging Facade for java)是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。(门面模式)
LOGBack,一个“可靠、通用、快速而又灵活的Java日志框架”。

它完全可以替代apache commons logging + log4j组合,并且在性能和架构方面有了不小的改进。

1. 调用slf4j的接口,使用log4j,java.util.logging等log框架
  代码中是要调用slf4j的方法来写log,基本上没有学习曲线,因为slf4j的接口和log4j等框架的接口是非常类似的。无非就是LogFactory和Log的使用而已。
  而jar包之间的调用关系如图一所示:
 
           图一:slf4j常规用法的jar文件之间的调用关系
 
2. 当前使用的是apache common logging + log4j组合,想不修改代码切换到slf4j + logback
  代码不需要做任何修改,只要把apache common logging和log4j的jar包拿掉,增加slf4j和logback的jar,并把log4j的配置文件转换为logback的配置文件即可。
  具体的jar包之间的调用关系,如图二所示:

           图二:commong logging + log4j切换为slf4j的jar文件之间的调用关系

简单总结

个人看法,slf4j确实是一个非常优秀的框架,但是我们在选择的时候也要先考虑考虑。
  ★ 如果是写新的极小的系统,基本上不会有切换log系统的必要性,直接使用java.util.logging的接口就可以,方便快捷,配置简单。
  ★ 如果是写新的大型系统的话,应该考虑使用slf4j。
  ★ 如果是OSGi系统的话,slf4j是必选的。
  ★ 如果是维护现有系统的话,根据实际情况,确实有必要的话(比如说现有系统性能方面不佳;或者说系统中存在多种log系统,想要整合等),就要替换为slf4j。反之,则不需要替换,等以后真的有需求再替换也很简单的。

 

下面例子是一个使用logback按照每天生成log文件到tomcat目录下、、、

生成的时候之需要从LoggerFactory里面取得logger对象进行配置

 private static final Logger LOG = LoggerFactory.getLogger("interfaceLogger");

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration>

    <contextName>loginterface</contextName>

    <!--配置环境变量设置相对路径-->

    <property name="LOG_HOME" value="${catalina.base}/logs/loginterface"/>

    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <Encoding>UTF-8</Encoding>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/loginterface.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>31</MaxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <!--这里指定logger name 是为jmx设置日志级别做铺垫 -->
    <logger name="interfaceLogger">
        <level value="INFO"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>

 

优点

现如今,稍微有一点点规模的软件,都会使用日志。日志可以用来监控代码中变量变化,跟踪代码运行的轨迹,在开发环境中担当调试器作用,向控制台或文件输出信息。而apache common logging +  log4j的组合,在slf4j出现之前,是业界最流行的log框架组合。但是自从slf4j+LOGBack的组合出现后,有一些著名的开源项目如,Apache的某些项目,Hibernate等都已经转向了slf4j + LOGBack的组合。

它们这样的选择,也印证了slf4j + LOGBack组合的优越性。这对组合大致有以下一些优点:

1. 支持更多的log框架
  同样作为log门面,apache common logging框架主要是提供在log4j和java.util.logging之间的切换,而slf4j则可以支持更多的log框架,而且即便未来有了新的log框架,也可以通过写几个简单的类就全部切换过去

2. 更佳的性能
  某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在LOGBack中需要3纳秒,而在Log4J中则需要30纳秒。LOGBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的”。

3. 支持参数化配置
  避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug("current user is: {}", user)。拼装消息被推迟到了它能够确定是不是要显示这条消息的时候,但是获取参数的代价并没有幸免。

4. 其他的一些优点
  支持OSGi,LOGBack的配置文件可以条件化配置等。

分享到:
评论

相关推荐

    日志 log4j-slf4j+logback1.3.0

    本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...

    logback-slf4j日志配置文件-下载即可使用

    logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中。下面是logback-slf4j日志配置文件的详细...

    调试日志之slf4j+logback

    SLF4J(Simple Logging Facade for Java)是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、Logback等。它的主要目的是让开发者能够在部署时自由选择所需的日志实现,而无需修改代码。SLF4J通过引入`...

    详解Spring Boot 使用slf4j+logback记录日志配置

    Logback 是 SLF4J 推荐的日志实现,它由 log4j 的创始人设计,提供了高速、灵活且可靠的日志记录功能。 使用 SLF4J 和 Logback 进行日志记录配置的主要目的是: 1. 为 Spring 的开发提供了一个更快速更广泛的入门...

    slf4j+logback的jar和配置文件

    SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J是一个日志门面,它提供了一个统一的接口,允许开发人员在运行时插入所...

    Logback+Slf4j,基于SpringBoot实现日志脱敏.zip

    总之,通过SpringBoot、Slf4j和Logback的结合,我们可以轻松地实现日志的敏感信息脱敏,提升系统的安全性。同时,这个例子也为毕业设计提供了实用的参考,让学生了解如何在实际项目中处理敏感数据,增强对隐私保护的...

    采用slf4j+logback输出日志

    Logback是SLF4J的一个实现,由著名日志框架Log4j的创始人Ceki Gülcü所创建。Logback被认为是比Log4j更高效、功能更强大的日志处理框架。 本文将详细介绍如何使用SLF4J与Logback来输出应用程序的日志,并提供必要...

    slf4j完整日志文件

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging (JUL)、Logback等。这个接口允许最终用户在部署时插入...

    Using slf4j with logback

    这个示例可能包含了一个简单的Java应用程序,该程序使用SLF4J API记录日志,并使用`logback.xml`配置文件进行日志输出。通过查看和运行这个示例,你可以更好地理解SLF4J和Logback是如何协同工作的。 总的来说,SLF4...

    Spring Boot SLF4J日志实例 / Logback

    **Spring Boot SLF4J与Logback日志实践** ...我们可以通过配置文件定制日志输出路径、级别和格式,也可以在代码中灵活地使用SLF4J的API进行日志记录。了解并掌握这些知识,对于日常的开发和问题排查非常有帮助。

    slf4j+logback 日志系统使用

    SLF4J提供了一个接口,开发者可以在代码中使用这些接口进行日志记录,然后通过绑定不同的日志实现(如Logback、Log4j等),在运行时选择具体的日志系统。 **2. Logback介绍** Logback是由Ceki Gülcü创建的,他是...

    slf4j+logback日志系统介绍

    - **log4j-over-slf4j.jar**:用于替换Log4J,需要注意的是,原有的`log4j.properties`配置文件将不再有效,需要转换为`logback.xml`。 - **jul-to-slf4j.jar**:用于替换JDK自带的日志系统,需要在程序启动时调用`...

    Springboot项目使用Slf4j将日志保存到本地目录的实现代码

    Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中,Slf4j 是默认的日志记录框架。本文将介绍如何使用 Slf4j 将...

    slf4j+logback

    SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理中的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J是一个日志门面,它提供了一个统一的接口,允许开发人员在运行时插入...

    Slf4j+logback实现logback测试

    综上所述,Slf4j与Logback的结合使用可以为Java应用程序提供强大的日志管理能力。通过合理的配置和测试,我们可以确保日志系统既满足调试需求,又不拖累应用性能。在实际开发中,理解并熟练运用这些工具是非常重要的...

    slf4j+logback 于log4j+commons-logging大PK

    今天我们将聚焦两个流行的日志框架——SLF4J(Simple Logging Facade for Java)和Logback,以及它们与Log4j和Commons-Logging的对比。 SLF4J是一个接口层的日志框架,它提供一个统一的API,允许用户在运行时插入...

    ssm +shiro+slf4j+logback 学习记录

    这个"ssm +shiro+slf4j+logback 学习记录"的压缩包可能包含了一系列教程、示例代码和配置文件,帮助开发者学习如何在实际项目中整合这些技术,实现高效且安全的Web应用。通过学习和实践这些内容,你可以掌握现代Java...

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案.docx

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...

    logback 1.2.6 和 slf4j 1.7.32

    Logback是日志框架,而SLF4J(Simple Logging Facade for Java)则是一个日志抽象层,它们共同为Java应用程序提供灵活且高效的日志记录能力。 **SLF4J介绍** SLF4J(Simple Logging Facade for Java)是一个接口层...

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

    这样,项目中的代码可以使用SLF4J的API进行日志记录,而实际的日志输出则通过log4j框架完成。 SLF4J的使用有以下几个关键点: 1. **接口定义**:SLF4J提供了一系列的Logger接口,如LoggerFactory,用于创建日志对象...

Global site tag (gtag.js) - Google Analytics