日志系统中的API小结

对于Java Web来说,日志是特别重要的一个东西,很多时候,可能是了解应用程序如何执行的唯一方式。在Java中,在日志方面,有许多的日志框架。

1.java.util.logging包,简称为j.u.l。在JDK1.4版本中就已经在使用。对于logging包,提供了七个日志级别来控制输出,分别为SEVERE、WARING、INFO、FINE、FINER、FINEST。

2.Log4j

它是Apache的一个开源项目,使用log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器,控制每条日志的输出格式。log4j也分为七个日志级别,每一条日志信息的不同能够更加控制日志的生成过程。七个日志级别为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE。这些可以通过配置文件来灵活的配置。

3 LogBack

是一个很成熟的日志框架,目前分为三个模块:logback-core、logback-classic、logback-access。其中logback-core是其他两个模块的基础模块;logback-classic是log4j的一个改良版本,实现了SLF4J API。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

要想打印日志消息的话,可以使用上述框架中的一种。还有另外一种框架和上述有区别,区别在于它的类型原理不一样。很多公司推荐不直接使用日志系统中的API,而是依赖于日志框架SLF4j中的API,它是一种门面模式的日志框架,有利于维护和各个类的日志处理方式统一。门面模式的核心为外部与一个子系统的通信必须通过一个统一的外观对象进行。前面的几种在于每一种日志框架都有自己单独的API,要使用对应的框架就要使用对应的API,对于程序来说很不方便。SLF4j解决了这个问题。对于底层的应用程序来说,无论底层的日志框架如何变更,都不需要任何感知。在计算机科学领域中,任何存在的问题都可以通过增加一个间接的中间层来解决。即所谓的门面模式.SLF4j是Java简易门面,一套包装Logging框架的界面模式,它只是一个门面服务而已,并不是真正的日志框架,真正日志输出相关的实现还是依赖于Log4j、logback等日志框架。Apache Commons Logging也是一种门面模式,是基于Java的日志记录实用程序,用于日志记录和其他工具包的编程模型,通过一些工具提供API,日志实现和包装器实现。

相对于Log4j的API,SLF4J存在一下特点:

Log4j存在TRACE、DEBUG、INFO、WARN、ERROR、FATAL六种记录等级。在SLF4j中拿掉了FATAL等级,只剩下五种。

Log4j间接的可以使用string相加的写法,这种写法存在性能的问题,而SLF4j不会出现这个问题,可以使用logger.error("{}is+serviceid".serviceid)

SLF4J只支持MDC、不支持NDC.。

关于日志输出的,主要有两类工具。

一类是日志框架,主要用于进行日志的输出,比如那个文件和日志格式,另一类是日志门面,一套通用的APi,用来屏蔽各个日志框架之间的差异。对于程序员来说,可以使用Log4j+SLF4j来组合进行日志输出。

你可能感兴趣的:(Java)