`
aben328
  • 浏览: 1460642 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

slf4j+logback (转)

阅读更多

slf4j+logback (转)

Java 2009-09-06 22:31:22 阅读249 评论0 字号:

 

 

1、介绍:

SLF4J - 一个通用的日志门面库,为各种Logging API提供了一套通用的日志接口,更多信息请参考官方网站

SLF4J会根据classpath中所存在的适配器的jar来决定将使用的日志实现库。

slf4j+logback (转) - iGhost - I ghost

若需要将使用了其它logging APIs的第三方类库或已有代码的日志调用迁移到SLF4J,需要替换下面的jar:

  • jcl-over-slf4j.jar     替换apache commons logging。
  • log4j-over-slf4j.jar   替换log4j。原有的log4j.properites将失效,需要转换为logback.xml,logback网站上有提供转换器:http://logback.qos.ch/translator/
  • jul-to-slf4j.jar    替换jdk logging。需要在程序开始时调用SLF4JBridgeHandler.install()来注册listener。

 

SLF4J 支持参数化的log字符串,避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug(“current user is: {}”, user)。拼装消息被推迟到了它能够确定是不是要显示这条消息的时候,但是获取参数的代价并没有幸免。同时,日志中的参数若超过三个,则需要将参数以数组的形式传入,如:

Object[] params = {value1, value2, value3};

logger.debug(“first value: {}, second value: {} and third value: {}.”, params);

现在Hibernate、Jetty、Spring-OSGi、Wicket和MINA等项目都已经迁移到了SLF4J,由此可见SLF4J的影响力不可忽视。

LogBack -  一个通用可靠、快速灵活的日志框架,更多信息请参考官方网站

LogBack 将作为Log4j的替代,和slf4j组成新的日志系统的完整实现。LogBack分为三个模块:logback-core、logback- classic和logback-access。logback-core是其它两个模块的基础;logback-classic是log4j的一个改良版本; logback-access与Servlet容器集成提供通过Http来访问日志的功能。

LogBack声称具有极佳的性能:

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

2、快速上手:

所需jar:

slf4j-api-1.4.3.jar - 一定是要的,直接支持logback实现

jcl104-over-slf4j-1.4.3.jar - 使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制

slf4j-jcl-1.4.3.jar - 使用SLF4J的接口,底层由common-loggin实现(不能和jcl104-over-slf4j-1.4.3.jar同时使用)

slf4j-log4j12-1.4.3.jar - 使用SLF4J的接口,底层由log4j实现

logback-core.jar logback核心包

logback-classic.jar

同时删除原来的commons-logging.jar和log4j.jar

mport org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Test {

  final Logger logger = LoggerFactory.getLogger(Test.class);

    public void logTest() {

      // 不再需要log.isDebugalbe(),代码更简洁

      logger.debug(”hello {}”, “amsz”);

      logger.info("hihi{}","hhhh");

      }

}

再看看logback.xml的配置:

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

<configuration>

    <substitutionProperty name="log.base" value="../logs/hzg" />

    <jmxConfigurator />

    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">

        <layout class="ch.qos.logback.classic.PatternLayout">

            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>

        </layout>

    </appender>

<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)-->

    <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <Encoding>UTF-8</Encoding>

        <File>${log.base}.log</File>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>

        </rollingPolicy>

          <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

            <MaxFileSize>2MB</MaxFileSize>

        </triggeringPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">

            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>

        </layout>

    </appender>

   

    <!-- 需要记录日志的包 -->

    <logger name="com.hzg.core">

        <level value="WARN" />

    </logger>

    <logger name="com.hzg.test">

        <level value="INFO" />

    </logger>   

   

    <logger name="org.springframework">

        <level value="WARN" />

    </logger>

    <logger name="org.hibernate">

        <level value="WARN" />

    </logger>

    <logger name="org.hibernate.SQL">

        <level value="WARN" />

    </logger>

        <logger name="org.hibernate.cache">

        <level value="ERROR" />

    </logger>

    <root>

        <level value="INFO" />

        <appender-ref ref="stdout" />

        <appender-ref ref="logfile" />

    </root>

</configuration>

3、总结:

使用slf4j+logback的优势:

 

  • 支持按文件大小或基于时间的切分方式,可自定义命名模式
  • 支持文件打包(触发器方式)
  • 支持OSGI环境
如果在单纯的logging环境中,使用SLF4J意义不大。如果想在各种logger API中切换,SELF4J是理想选择,另外在新的项目中,使用SLF4J+Logback是比较好的日志框架选型。
分享到:
评论

相关推荐

    调试日志之slf4j+logback

    本文将深入探讨“调试日志之slf4j+logback”的主题,这两个组件是Java开发中的常见日志解决方案。 SLF4J(Simple Logging Facade for Java)是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、Logback等...

    日志 log4j-slf4j+logback1.3.0

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

    Tomcat + SLF4J + Logback 2017年10月最新包(Tomcat7~9)

    https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback上的jar与源码,网络不好,下载不易,特此分享。包括: logback-1.2.3.zip Tomcat7.0.82\tomcat-juli-7.0.82-slf4j-1.7.25-logback-1.2.3.zip Tomcat...

    slf4j+logback日志系统介绍

    ### SLF4J与Logback:新一代日志系统的解析 #### 一、SLF4J:简化日志处理的新标准 SLF4J(Simple Logging Facade for Java)作为一个新兴的日志框架,由Ceki Gülcü开发,旨在提供一个简单而统一的日志接口,以...

    slf4j+logback

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

    slf4j+logback 于log4j+commons-logging大PK

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

    slf4j+logback的jar和配置文件

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

    ssm +shiro+slf4j+logback 学习记录

    SSM(Spring、SpringMVC、MyBatis)与Apache Shiro、SLF4J以及Logback是Java Web开发中的重要框架和工具,它们在构建安全、高效且可维护的Web应用方面起着关键作用。这里我们将深入探讨这些技术的核心概念、功能以及...

    slf4j + logback配置实例

    通常,这包括`slf4j-api.jar`(SLF4J API)、`logback-classic.jar`(Logback经典实现,包含了SLF4J的适配器)和`logback-core.jar`(Logback核心库)。这些依赖可以通过Maven或Gradle等构建工具来管理。 接下来,...

    采用slf4j+logback输出日志

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

    slf4j+logback使用

    SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它提供了一个统一的API,允许开发者选择任何支持的底层日志库,如Logback、Log4j或Java内置的日志系统。Logback是陈雪峰创建的,作为Log4j的...

    slf4j+logback+springmvc+maven小例子

    SLF4J允许开发者在部署时插入所需的日志实现,比如logback、log4j等,这使得项目的可移植性和灵活性大大增强。 Logback是另一个关键组件,它是由log4j的创始人Ceki Gülcü创建的。Logback是目前广泛使用的日志框架...

    slf4j+logback快速上手教程

    ### SLF4J + Logback 快速上手教程 #### 一、SLF4J 简介 **SLF4J**(Simple Logging Facade for Java)是一种简单且高效的日志门面库,旨在为Java平台上的各种日志框架提供统一的API,从而简化日志记录的过程。通过...

    Slf4j+logback实现logback测试

    **Slf4j与Logback简介** Slf4j(Simple Logging Facade for Java)是一个日志门面,它提供了一个统一的API,允许开发者选择合适的日志框架,如Logback、Log4j等,而无需修改代码。Slf4j的主要目标是为各种日志框架...

    slf4j+logback 日志系统使用

    SLF4J(Simple Logging Facade for Java)和Logback是Java开发中广泛使用的日志处理框架。SLF4J提供了一个抽象层,允许开发者在运行时选择合适的日志实现,而Logback则是SLF4J的一个具体实现,它以其高效、灵活和...

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

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

    tomcat9-slf4j-logback:Tomcat 9.0.x的SLF4J和Logback集成

    Tomcat SLF4J Logback是tomcat的替代产品,它允许所有内部日志记录全部使用我们喜欢的slf4j / logback库。 注意 从logback 1.1.7开始,不再需要在server.xml中包含${catalina.home}来进行logback访问。 我们还重新...

    springMvc+mybaties+slf4j

    【SLF4J(Simple Logging Facade for Java)】是一个日志门面,为各种日志框架如log4j、Logback提供一个统一的接口。SLF4J允许开发者在部署时选择合适的日志实现,只需更换绑定的日志实现库即可。这使得项目具有更好...

    slf4j-1.6.1+logback-0.9.24.rar

    janino-2.3.17.jar jcl-over-slf4j-1.6.1.jar log4j-1.2.8.jar logback-access-0.9.24.jar logback-classic-0.9.24.jar logback-core-0.9.24.jar ... slf4j-1.6.1+logback-0.9.24.rar slf4j-api-1.6.1.jar

    SLF4J&Logback.zip

    On Java 8 中用到的日志包,SLF4J+Logback。

Global site tag (gtag.js) - Google Analytics