您的位置:首页 > 编程语言 > Java开发

java 日志框架日志系统关系详解

2017-05-22 12:01 435 查看
java 日志框架日志系统关系详解

刚刚接触java的日志框架和日志系统时,完全搞不清楚他们之间的关系,也不是很清楚,自己使用的具体是哪种框架那种系统。今天好好总结一下他们之间的关系。

在说明关系前,先明确两个概念:

1. 日志系统:日志的具体实现。经典的有log4j;jdk自带的有java.util.Logging; 还有log4j作者推出的被高度评价的logBack等等。

2. 日志框架:如果只存在一种日志系统,日志框架完全没有必要存在(logBack无法独立使用),但事与愿违。为了解决多个日志系统的兼容问题,日志框架应运而生。主流的日志框架有commons-logging和sl4j。

commons-logging是apache推出的日志框架,commons-logging只是规定了日志的接口,其设计原理类似于jdk中servlet和jdbc的设计。主流的日志系统都实现了commons-logging定义的接口,这样就看通过commons-logging统一的使用的日志,而不用关系具体使用的是哪种日志系统。Commons-logging+log4j : 经典的一个日志实现方案。出现在各种框架里。如spring 、webx 、ibatis 等等。直接使用log4j 即可满足我们的日志方案。但是一般为了避免直接依赖具体的日志实现,一般都是结合commons-logging
来实现。常见代码如下:

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

private static Log logger = LogFactory.getLog(CommonsLoggingTest.class);

Logback : LOGBack 作为一个通用可靠、快速灵活的日志框架,将作为Log4j 的替代和SLF4J 组成新的日志系统的完整实现。官网上称具有极佳的性能,在关键路径上执行速度是log4j 的10 倍,且内存消耗更少。具体优势见:

http://logback.qos.ch/reasonsToSwitch.html

Logback必须配合sl4j使用。由于logback和sl4j是同一个作者,其兼容性不言而喻。但sl4j面临与其他日志框架和日志系统的兼容性问题。

1. JCL-over-sl4j:它重写了commons-logging的API,并将所有日志输出转向sl4j。这样就避免了两套日志框架并存的问题。由于JCL-over-SLF4J和原来的commons-logging具有完全相同的API,因此两者是不能共存的。

2. sl4j-*12: 具体的如 sl4j-lo4j12 其实现了sl4j的接口并将日志引入log4j。

一图胜千言:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  log4j api 框架