如何将日志系统切换到 Logback?
文章插图
文章插图
作者 | 沉默王二
来源 | 沉默王二(id:cmower)
Log4j 介绍过了 , SLF4J 也介绍过了 , 那接下来 , 你懂的 , Logback 就要隆重地登场了 , 毕竟它哥仨有一个爹 , 那就是 Ceki Gulcu 。
就在昨天 , 老板听我说完 Logback 有多牛逼之后 , 彻底动心了 , 对我下了死命令 , “这么好的日志系统 , 你还不赶紧点 , 把它切换到咱的项目当中!”
我们项目之前用的 Log4j , 在我看来 , 已经足够用了 , 毕竟是小公司 , 性能上的要求没那么苛刻 。
文章插图
Logback 强在哪
【如何将日志系统切换到 Logback?】1)非常自然地实现了 SLF4J , 不需要像 Log4j 和 JUL 那样加一个适配层 。
文章插图
2)Spring Boot 的默认日志框架使用的是 Logback 。 一旦某款工具库成为了默认选项 , 那就说明这款工具已经超过了其他竞品 。
文章插图
注意看下图(证据找到了 , 来自 Spring Boot 官网):
文章插图
也可以通过源码的形式看得到:
文章插图
3)支持自动重新加载配置文件 , 不需要另外创建扫描线程来监视 。
4)既然是巨佬的新作 , 那必然在性能上有了很大的提升 , 不然呢?
文章插图
Logback 使用示例第一步 , 在 pom.xml 文件中添加 Logback 的依赖:
logback-classic
Maven 会自动导入另外两个依赖:
文章插图
logback-core 是 Logback 的核心 , logback-classic 是 SLF4J 的实现 。
第二步 , 来个最简单的测试用例:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author 微信搜「沉默王二」 , 回复关键字 PDF
*/
public class Test {
static Logger logger = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
logger.debug("logback");
}
}
Logger 和 LoggerFactory 都来自 SLF4J , 所以如果项目是从 Log4j + SLF4J 切换到 Logback 的话 , 此时的代码是零改动的 。
运行 Test 类 , 可以在控制台看到以下信息:
12:04:20.149 [main] DEBUG com.itwanger.Test - logback
在没有配置文件的情况下 , 一切都是默认的 , Logback 的日志信息会输出到控制台 。 可以通过 StatusPrinter 来打印 Logback 的内部信息:
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory;StatusPrinter.print(lc);
在 main 方法中添加以上代码后 , 再次运行 Test 类 , 可以在控制台看到以下信息:
12:59:22.314 [main] DEBUG com.itwanger.Test - logback
12:59:22,261 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:59:22,262 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:59:22,262 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:59:22,268 |-INFO in ch.qos.logback.classic.BasicConfigurato
也就是说 , Logback 会在 classpath 路径下先寻找 logback-test.xml 文件 , 没有找到的话 , 寻找 logback.groovy 文件 , 还没有的话 , 寻找 logback.xml 文件 , 都找不到的话 , 就输出到控制台 。
一般来说 , 我们会在本地环境中配置 logback-test.xml , 在生产环境下配置 logback.xml 。
**第三步 , **在 resource 目录下增加 logback-test.xml 文件 , 内容如下所示:
%d{HH:mm:ss.SSS} %relative [%thread] %-5level %logger{36} - %msg%n
Logback 的配置文件非常灵活 , 最基本的结构为
文章插图
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 采用|消息称一加9系列将推出三款新机,新增一加9E
- 美国|英国媒体惊叹:165个国家采用北斗将GPS替代,连美国也不例外?
- 通气会|12月4~6日,2020中国信息通信大会将在成都举行
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 培育|跨境电商人才如何培育,长沙有“谱”了
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 荣耀V30|麒麟990+40W快充,昔日猛将彻底沦为清仓价?网友:太遗憾
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- 网络覆盖|爱立信:2020年底,将有超过10亿人口获得5G网络覆盖