Java日志框架与日志系统

随着项目愈来愈复杂,谁也不能保证本身的项目在运行过程当中不出现错误,出现错误并不可怕,问题是要及时的排除错误,让项目更加健壮并继续运行。排除这些错误就须要获取错误信息,信息从哪里来呢,一个设计良好的项目,确定记录了项目运行的日志。更重要的是,它还能完成跟踪调试、程序状态记录、崩溃数据恢复等工做。那么咱们怎么样来设计这个日志类呢?java

在java的世界里,日志类通常是不须要考虑和设计的,由于存在不少优秀的日志系统,好比常见的Log4j和Logback,还又sun提供的java.util.Logging。web

可是日志系统多了,也不是好事!由于在java EE的项目中,咱们会引入不少的第三方包,好比Spring、Mybatis、Httpclient等等。。。每一个第三方的包都会有本身的日志系统,问题就来了,若是日志系统不兼容甚至产生冲突,灾难就产生了?或者是不一样的日志系统打印日志的规则不一样,接口也不一样,那使用方就要作各类适配。。。spring

可是。。。。这是不可能的!!!!apache

日志框架解决了这些问题!!!框架

日志框架是什么?this

先看看两者的不一样定义!!!!spa

 

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

日志框架:若是只存在一种日志系统,日志框架彻底没有必要存在(logBack没法独立使用),但事与愿违。为了解决多个日志系统的兼容问题,日志框架应运而生。主流的日志框架有commons-logging和sl4j;设计

commons-logging是apache推出的日志框架,commons-logging只是规定了日志的接口规范,其设计原理相似于jdk中servlet和jdbc的设计。调试

主流的日志系统都实现了commons-logging定义的接口,这样就看经过commons-logging统一的使用的日志,而不用关系具体使用的是哪一种日志系统。

 

日志框架

一、Commons-logging:common-logging是apache提供的一个通用的日志接口。用户能够自由选择第三方的日志组件做为具体实现,像log4j,或者jdk自带的logging,common-logging会经过动态查找的机制,在程序运行时自动找出真正使用的日志库。

Commons-logging+log4j 是经典的一个日志实现方案。出如今各类框架里。如spring 、webx 、ibatis 等等。通常为了不直接依赖具体的日志实现,通常都是结合commons-logging 来实现。常见代码以下:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

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

二、sl4j:slf4j全称为Simple Logging Facade for JAVA,java简单日志门面。相似于Apache Common-Logging,是对不一样日志框架提供的一个门面封装,能够在部署的时候不修改任何配置便可接入一种日志实现方案。可是,他在编译时静态绑定真正的Log库。使用SLF4J时,若是你须要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合。

logback+sl4j也是经典的一个日志实现方案。Logback做为一个通用可靠、快速灵活的日志框架,将做为Log4j 的替代和SLF4J 组成新的日志系统的完整实现。Logback必须配合sl4j使用。因为logback和sl4j是同一个做者,其兼容性不言而喻。但sl4j面临与其余日志框架和日志系统的兼容性问题。常见代码以下:

import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
public class A {  
    private static Log logger = LogFactory.getLog(this.getClass());  
} 

 

参考:http://blog.csdn.net/yycdaizi/article/details/8276265

相关文章
相关标签/搜索