Java项目中经常遇到的一个棘手的问题就是依赖的包使用了不同的日志组件,常用的有log4j, logback, common-logging, JUL等。但是日志的输出有必要进行统一配置,而不是针对不同的日志组件分别配置。本文介绍一种办法,可以实现多日志组件的日志统一输出。
示例说明
- 使用logback作为最终的唯一日志实现
- 使用SLF4J作为日志API框架
框架结构
框架解释
- SLF4作为核心的API,通过适配各种日志实现的桥接包,接收所有的日志请求
- logback作为具体的日志实现,处理SLF4J收集的所有日志
公共库的最佳实践
- 只使用SLF4J作为日志API,不依赖任何具体的日志实现,这样其他项目在使用时就无需桥接(公共库的开发者也要讲究用户体验)