log4j
Log4j 是一种非常流行的日志框架,最新版本是 2.x。
Log4j 是一个组件化设计的日志系统,它的架构大致如下:
当我们使用 Log4j 输出一条日志时,Log4j 自动通过不同的 Appender 把同一条日志输出到不同的目的地。例如:
console
:输出到屏幕;file
:输出到文件;socket
:通过网络输出到远程计算机;jdbc
:输出到数据库
在输出日志的过程中,通过 Filter 来过滤哪些 log 需要被输出,哪些 log 不需要被输出。例如,仅输出 ERROR 级别的日志。
最后,通过 Layout 来格式化日志信息,例如,自动添加日期、时间、方法名称等信息。
上述结构虽然复杂,但我们在实际使用的时候,并不需要关心 Log4j 的 API,而是通过配置文件来配置它。
以 XML 配置为例,使用 Log4j 的时候,我们把一个 log4j2.xml 的文件放到 classpath 下就可以让 Log4j 读取配置文件并按照我们的配置来输出日志。下面是一个配置文件的例子:
1 |
|
虽然配置 Log4j 比较繁琐,但一旦配置完成,使用起来就非常方便。对上面的配置文件,凡是 INFO 级别的日志,会自动输出到屏幕,而 ERROR 级别的日志,不但会输出到屏幕,还会同时输出到文件。并且,一旦日志文件达到指定大小(1MB),Log4j 就会自动切割新的日志文件,并最多保留 10 份。
有了配置文件还不够,因为 Log4j 也是一个第三方库,我们需要从这里下载 Log4j,解压后,把以下 3 个 jar 包放到 classpath 中:
log4j-api-2.x.jar
log4j-core-2.x.jar
log4j-jcl-2.x.jar
因为 Commons Logging 会自动发现并使用 Log4j,所以,把上一节下载的 commons-logging-1.2.jar 也放到 classpath 中。
要打印日志,只需要按 Commons Logging 的写法写,不需要改动任何代码,就可以得到 Log4j 的日志输出,类似:
1 | 03-03 12:09:45.880 [main] INFO com.itranswarp.learnjava.Main |
- 标题: log4j
- 作者: EWinner
- 创建于 : 2024-08-30 18:45:17
- 更新于 : 2024-08-31 10:51:42
- 链接: https://ewinner1.github.io/2024/08/30/log4j/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。