JAVA的日志框架分两类:
一类是日志门面,它定义了一组日志的接口规范,并未提供底层实现。例如slf4j
另外一类是日志实现,它实现日志具体实现,包括日志级别控制,日志格式,打印日志到文件,到屏幕,甚至到数据库等日志的种种具体功能,例如log4j。
日志门面是不能单独使用的,它必须和一种具体的日志实现框架相结合使用。日志门面和日志实现的分离,可以让业务使用不同的日志实现框架之间切换,而不需要改动任何代码,只要掌握日志门面的接口文档,也不需要新的日志实现的接口学习代价。
也就是编码模式里所谓的“门面模式”。
日志实现框架可以直接用于打印日志,但是一般不会这样做,因为这样回带来一定的麻烦,例如一个SDK包使用log4j打日志,而一个业务引用了这个SDK,但是业务开发者喜欢使用logback打日志。那么就会出现一个业务使用两款甚至多款日志框架并存,而且要维护多个日志配置文件的局面。
所以,我们都是用日志门面打日志。