Log学习--SLF4J+Logback日志模块的使用

  • 原创
  • |
  • 浏览:1441
  • |
  • 更新:

Logback 是当前流行的一个日志模块,其是同样曾经流行的日志模块 log4j 的升级版,两者是由同一个团队开发。相比 log4j,Logback 运行更高效,经过了更加严格的测试,配置文件变化后可自动加载,能更好地从IO失败中恢复,自动删除老的日志,自动压缩归档日志等。

SLF4J(Simple Logging Facade for Java)是当前流行的一个日志门面模块(同样由Logback团队开发),其本身只提供一系列日志记录接口和日志工厂,并不提供日志输出的具体实现,所以其必须搭配具体日志实现模块使用,比如 JUL, Log4j, Logback 等。

 

这篇经验就分享一下SLF4J + Logback 的使用!

 

工具/原料

  • Java, Eclipse

方法/步骤

  1. 1

    首先说一下为啥不推荐在业务代码中直接使用 Logback,而是要使用 SLF4J这类日志门面模块(JCL :Java Common Logging 是另一套曾经流行的日志门面)?

    其实这就是面向接口编程的一种体现(设计原则之接口隔离),日志实现模块是具体的东西,是变化的不断升级的,如果我们的代码强耦合某一具体的日志实现模块,当这个日志模块出现了bug或有了更好的日志实现模块出现,我们都会非常被动!如果我们的代码只是依赖SLF4J这类门面模块,替换具体日志实现模块的操作就会易如反掌!

    然后再简单说一下既然已经有了 JCL 这个日志门面,为啥还要再开发一套 SLF4J 呢?因为 JCL 的日志接口设计不合理,在某些应用场景下会出现性能问题(涉及到日志级别与字符串拼接等,具体可百度),所以 SLF4J 这个替代者就自然而然地诞生了!

     

  2. 2

    了解了一些基础的理论知识后,我们开始使用 SLF4J + Logback。日志组件作为通用模块,其使用方法也大同小异,通常就如下3步:

    1. 工程中引入相关依赖(jar包)

    2. 编写日志输出的配置文件

    3. 代码中创建日记记录类对象,记录日志

  3. 3

    引入相关依赖,如果你创建的是Maven工程,则将如下内容拷贝到工程POM文件中即可,如果不是Maven工程,则你需要下载对应的4个jar包,并添加到工程的类路径下:

    <!-- slf4j模块 -->

     

            <dependency>

     

                <groupId>org.slf4j</groupId>

     

                <artifactId>slf4j-api</artifactId>

     

                <version>1.7.25</version>

     

            </dependency>

     

            <!-- logback-core基础模块 -->

     

            <dependency>

     

                <groupId>ch.qos.logback</groupId>

     

                <artifactId>logback-core</artifactId>

     

                <version>1.2.3</version>

     

            </dependency>

     

            <!-- slf4j 接口实现模块 -->

     

            <dependency>

     

                <groupId>ch.qos.logback</groupId>

     

                <artifactId>logback-classic</artifactId>

     

                <version>1.2.3</version>

     

            </dependency>

     

            <!-- http访问日志模块 -->

     

            <dependency>

     

                <groupId>ch.qos.logback</groupId>

     

                <artifactId>logback-access</artifactId>

     

                <version>1.2.3</version>

     

            </dependency>

    Log学习--SLF4J+Logback日志模块的使用
  4. 4

    编写日志输出配置文件,在Maven工程的resources目录下创建 logback.xml  其中主要配置3种内容配置:<appender><logger> <root>

    <appender> : 日志输出配置,包含日志输出目的地,过滤器,日志格式,滚动策略等(针对输出到文件的配置)

    <logger> 和 <root> : 这两个都是日志记录对象的配置,包含日记记录级别,所使用的 appender 等。

     

    Log学习--SLF4J+Logback日志模块的使用
    Log学习--SLF4J+Logback日志模块的使用
    Log学习--SLF4J+Logback日志模块的使用
  5. 5

    Logger 配置文件补充,我们上一步骤使用的是 logback.xml 作为配置文件,其实 Logback 有很多定位配置文件的规则,其会按如下顺序获取配置文件(找到即止):

    1. 如果指定了 logback.configurationFile 属性的值,则使用该属性指定的文件作为配置文件

    2. 类路径下寻找 logback.groovy 文件

    3. 类路径下寻找 logback-test.xml 文件

    4. 类路径下寻找 logback.xml 文件

  6. 6

    代码中使用 Logback,在代码中,我们只需调用  SLF4J 提供的日志工厂 LoggerFactory 创建 Logger 对象即可,注意,正如我们前面提到的,实际代码开发过程中,只会使用 SLF4J 组件提供的接口和类。

    Log学习--SLF4J+Logback日志模块的使用
  7. 6
    此文章未经授权抓取自百度经验
  8. 7

    Logback 还提供了 DBAppender SMTPAppender 两种 <appender> 将相关日志输出到数据库和通过邮件发送给特定人,具体用法,大家可以自行研究。

     

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部