
slf4j日志
发布日期:2021-05-11 17:37:17
浏览次数:22
分类:精选文章
本文共 1074 字,大约阅读时间需要 3 分钟。
slf4j与log4j2配置与使用技巧
作为一个日志标准,slf4j(Simple Logging Facade for Java)并非真正的日志实现,而是一个抽象层。其设计初衷是为了允许开发者灵活选择日志框架,例如log4j2,从而统一日志处理流程。
log4j2配置说明
1. 配置文件规范
在使用log4j2前,需要配置自定义的log4j2.xml
文件。这个文件是日志框架的核心配置文件,决定了日志输出格式、存储位置及级别管理等功能。
2. 日志格式选项
log4j2支持多种日志格式模式,最常见的是使用与printf格式类似的占位符。以下是常见的格式示例:
%d{yyy-MM-dd HH:mm:ss}
:日期时间格式,默认输出为"2002-10-18 22:10:28"。%L
:记录日志事件的代码位置,如“com.example.MyClass.java:45”。%c
:日志类别全称,如“com.example.MyClass”。%m
:日志信息内容。%p
:日志优先级,依次从低到高为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。
3. 输出目的地(Appender)
在log4j2中,通过appender(输出目的地)指定日志的存储位置或输出渠道。常用的appender类型包括:
- ConsoleAppender:将日志输出至默认控制台。
- FileAppender:将日志写入文件。
- RollingFileAppender:支持日志 rolls(循环)功能,文件大小超限时自动新建新文件。
4. 日志级别系统
log4j2定义了8个日志级别,按优先级从低到高依次为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
。
根据设定的日志级别,程序会自动过滤日志输出。设级别为"INFO"时,只会记录INFO及更高级别的日志。
slf4j日志打印优势
slf4j的局限性在于其日志打印方式的设计。其优势体现在两个方面:
格式化输出,避免字符串拼接
使用slf4j的格式化字符串,直接将变量代入日志内容中,无需手动拼接字符串。logger.info("Set score {} for Person {} ok.", score, p.getName());
灵活性高,适配多种日志框架
slf4j本身不带日志实现,可以通过桥接(Facade Pattern)将其与其他日志框架(如Log4j2、JBoss.log、SLF4E等)集成,实现统一日志管理。