写在前面的话:
作为《Java程序员修炼之道》博文的第一个主题Logging,我计划中按照如下三篇来写:
- Logback的简单介绍和配置
- 在Java代码中如何使用SLF4J来写日志以及写日志的要点
- 作为一个程序员,在日常工作中如何分析和挖掘Log。
PS:默认生成的目录不对,仔细检查过了,我的h1,h2,h3,h4用的都没错。
1. 缘起
写代码中的日志是一个除了用代码实现功能之外最基础最基础的一个技能了,是一个必须掌握的技能。但是目前为止,关于如何日志的文章和书籍还是不多。
1.1 写日志的必要性
碰到QA提的一个bug的时候,我见识过两种方式的答复:a)请给我重现步骤和重现数据;b)把当时的日志给我。答复前者的,一般需要花很多时间去找问题出现在那里,如果是别人开发的模块的话,花费的时间更多。答复后者的,一般能很快的找到出问题的点,然后就可以开始进入修复的流程。
从概念上来说:日志是一个可运行的、可维护的软件的基础组成部分;通过日志,我们可以了解软件系统在运行中的实时状态,历史状态和异常状态等。一个没有良好日志的软件是所有人的噩梦。想象一下,你开发中使用的框架,比如Spring之类的,如果没有日志的话,你还会用吗?(感谢@ix_fly网友的这个建议)
如果你不想给自己找麻烦,你还是把日志好好写写。
1.2 为什么选Logback?
原因有俩:
- 我最近几年用的都是Logback
- 在前几天Log4j 2.0出来之前,logback的Logger用得比较爽
2. 如何配置Logback
2.1 Logback简单介绍
简单来说就是Log4j 1流行了,发现有一些问题是无法解决的,于是又出来了Logback,在Log4j的基础上提升了性能,提高了功能等等。不过前几天有出来了Log4j 2,据说是相对于Logbak来说又提升了性能提高了功能。
2.2 关于SLF4J和Logback
SLF4J(slf4j.org)又称Simple Logging Facade for Java,是一个通用的logging接口,它试图一统Logging框架的天下,兼容了(Log4j 1, java.util.logging和Jakarta Commons Logging)这三个最流行的Logging框架。Logback就是SLF4J的默认实现。
2.3 依赖包导入
2.3.1 一般程序
Maven版
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
非Maven版
把