在java生态系统中有许多的日志框架,比如log4j、logback。这些日志框架都有各自的特点。
常用日志框架
j.u.l
j.u.l是java.util.logging包的简称,是jdk在1.4版本中引入的java原生日志框架。java logging API提供了七个日志级别用来控制日志输出。分别是server、warning、info、config、fine、finer、finest。
log4j
log4j是apache的一个开源项目,通过使用log4j,控制日志输出的目的地(包括控制台、文件、GUI组件等),同时可以控制每一条日志输出的格式。log4j也有七种日志级别:off、fatal、error、warn、info、debug,trace。
logBack
logBack也是一个很成熟的日志框架。logback分为三个模块:logback-core、logback-classic和logback-access。
日志门面
应用中不应该直接使用日志系统(log4j、logBack)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类日志处理方式的统一。日志门面,是门面模式的一个典型的应用。使用日志门面可以帮我们屏蔽底层日志框架的具体实现,这样就可以解除应用和日志框架之间的耦合。
常用日志门面:
SLF4J
java简易日志门面(simple logging facade for java,缩写SLF4J)。SLF4J只是一个门面服务,并不是真正的日志框架,真正的日志输出相关实现依赖Log4j、LogBack等日志框架。
commons-logging
Apache Commons Logging是一个基于java的日志记录使用程序,功能和SLF4J类似,主要用来做日志门面的。
总结
推荐使用Log4j+SLF4J这样的组合来进行日志输出。在编码时,避免直接使用Log4j相关的API,而是使用SLF4J这种日志门面。