Log学习--SLF4J+Logback日志模块的使用
- 原创
- |
- 浏览:1441
- |
- 更新:
Logback 是当前流行的一个日志模块,其是同样曾经流行的日志模块 log4j 的升级版,两者是由同一个团队开发。相比 log4j,Logback 运行更高效,经过了更加严格的测试,配置文件变化后可自动加载,能更好地从IO失败中恢复,自动删除老的日志,自动压缩归档日志等。
SLF4J(Simple Logging Facade for Java)是当前流行的一个日志门面模块(同样由Logback团队开发),其本身只提供一系列日志记录接口和日志工厂,并不提供日志输出的具体实现,所以其必须搭配具体日志实现模块使用,比如 JUL, Log4j, Logback 等。
这篇经验就分享一下SLF4J + Logback 的使用!
方法/步骤
首先说一下为啥不推荐在业务代码中直接使用 Logback,而是要使用 SLF4J这类日志门面模块(JCL :Java Common Logging 是另一套曾经流行的日志门面)?
其实这就是面向接口编程的一种体现(设计原则之接口隔离),日志实现模块是具体的东西,是变化的不断升级的,如果我们的代码强耦合某一具体的日志实现模块,当这个日志模块出现了bug或有了更好的日志实现模块出现,我们都会非常被动!如果我们的代码只是依赖SLF4J这类门面模块,替换具体日志实现模块的操作就会易如反掌!
然后再简单说一下既然已经有了 JCL 这个日志门面,为啥还要再开发一套 SLF4J 呢?因为 JCL 的日志接口设计不合理,在某些应用场景下会出现性能问题(涉及到日志级别与字符串拼接等,具体可百度),所以 SLF4J 这个替代者就自然而然地诞生了!
了解了一些基础的理论知识后,我们开始使用 SLF4J + Logback。日志组件作为通用模块,其使用方法也大同小异,通常就如下3步:
1. 工程中引入相关依赖(jar包)
2. 编写日志输出的配置文件
3. 代码中创建日记记录类对象,记录日志
引入相关依赖,如果你创建的是Maven工程,则将如下内容拷贝到工程POM文件中即可,如果不是Maven工程,则你需要下载对应的4个jar包,并添加到工程的类路径下:
<!-- slf4j模块 -->
编写日志输出配置文件,在Maven工程的resources目录下创建 logback.xml 其中主要配置3种内容配置:<appender>、 <logger> 和 <root>
<appender> : 日志输出配置,包含日志输出目的地,过滤器,日志格式,滚动策略等(针对输出到文件的配置)
<logger> 和 <root> : 这两个都是日志记录对象的配置,包含日记记录级别,所使用的 appender 等。
Logger 配置文件补充,我们上一步骤使用的是 logback.xml 作为配置文件,其实 Logback 有很多定位配置文件的规则,其会按如下顺序获取配置文件(找到即止):
1. 如果指定了 logback.configurationFile 属性的值,则使用该属性指定的文件作为配置文件
2. 类路径下寻找 logback.groovy 文件
3. 类路径下寻找 logback-test.xml 文件
4. 类路径下寻找 logback.xml 文件
代码中使用 Logback,在代码中,我们只需调用 SLF4J 提供的日志工厂 LoggerFactory 创建 Logger 对象即可,注意,正如我们前面提到的,实际代码开发过程中,只会使用 SLF4J 组件提供的接口和类。
- 此文章未经授权抓取自百度经验
Logback 还提供了 DBAppender 和 SMTPAppender 两种 <appender> 将相关日志输出到数据库和通过邮件发送给特定人,具体用法,大家可以自行研究。
END