Logback 是由 log4j 创始人 Ceki Gülcü 设计的又一个开源日志组件。Logback 分成三个模块,logback-core,logback-classic 和 logback-access。
- logback-core 是其它两个模块的基础模块。
- logback-classic 是 log4j 的一个改良版本,实现了 slf4j api,所以你可以在 logback 和 slf4j 其他的实现之间切换。
- logback-access 访问模块与 Servlet 容器集成提供通过 Http 来访问日志的功能。
Logback 三大重要概念
在 Logback 里,最重要的三个类分别是 Logger,Appender,Layout。
Logger:日志记录器,把它关联到应用对应的 context 上后,主要用于存放日志对象,定义日志类型,级别等。
Appender:指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、MySQL、PostreSQL、Oracle 和其他数据库、JMS 和远程 UNIX Syslog 守护进程等。
Layout:负责把事件转换成字符串,格式化日志信息的输出。
Logger 类是 logback-classic 模块的一部分,而 Appender 和 Layout 接口来自 logback-core。
Logback 与 Log4J
实际上,这两个日志框架都出自同一个开发者之手,Logback 相对于 Log4J 有更多的优点。
- 同样的代码路径,Logback 执行更快;
- 更充分的测试;
- 原生实现了 SLF4J API(Log4J 还需要有一个中间转换层);
- 内容更丰富的文档;
- 支持 XML 或者 Groovy 方式配置;
- 配置文件自动热加载;
- 从 IO 错误中优雅恢复;
- 自动删除日志归档;
- 自动压缩日志成为归档文件;
- 支持 Prudent 模式,使多个 JVM 进程能记录同一个日志文件;
- 支持配置文件中加入条件判断来适应不同的环境;
- 更强大的过滤器;
- 支持 SiftingAppender(可筛选 Appender);
- 异常栈信息带有包信息;