slf4j简介 log4j.properties简单配置
来源http://www.cnblogs.com/tsingxu/archive/2011/11/06/2238453.html
?
?准确的说,slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade(外观),允许用户在部署最终应用时方便的变更其日志系统。
? ? 外观模式
? ? GoF在 设计模式中说,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
? ? Facade模式的一个要点:
1 从客户的角度看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户来说,从某种程度上也达到了一种“解耦”的效果--内部子系统的任何变化不会影响到Facade接口的变化。
2 Facade模式更注重从架构的层次去看整个系统,而不是单个类的层次,很多时候更多是一种架构模式
? ? ?使用方式:在开发过程中统一按照slf4j的API进行开发,在部署的时候,选择不同的日志系统包(包括配置文件),即可自动转换到不同的日志系统上。比如:选择JDK自带的日志系统,则只需要将slf4j-api-1.6.4.jar和slf4j-jdk14-1.6.4.jar放置到classpath中即可,如果中途无法忍受JDK自带的日志系统了,想换成log4j的日志系统,仅需要用slf4j-log4j12-1.6.4.jar替换slf4j-jdk14-1.5.10.jar即可。
? ? 我们举个例子,好有个直观的认识
package com.slf4j.test;
import org.slf4j.*;
/**
*
* @author Tsingxu
*
*/
public class test {
public static final Logger logger = LoggerFactory.getLogger(test.class);
public static void main(String[] args){
System.setProperty("log4j.configuration", "log4j.properties");
test.logger.debug("test start...");
test.logger.error("test error...");
}
}
在选用 slf4j-api-1.6.4.jar + slf4j-jdk14-1.6.4.jar 时输出在控制台:
? 2011-11-6 21:55:18 com.slf4j.test.test main在选用?slf4j-api-1.6.4.jar + slf4j-log4j12-1.6.4.jar + log4j-1.2.13.jar 时输出(前提是有相应的配置文件log4j.properties)到文件logs.log和errors.log
logs.log:
? 2011-11-06 21:59:33 [ main:0 ] - [ DEBUG ] test start...? 2011-11-06 21:59:33 [ main:0 ] - [ ERROR ] test error...errors.log
? 2011-11-06 21:59:33 [ main:0 ] - [ ERROR ] test error...其中log4j.properties简要配置如下:
log4j.debug=true
log4j.rootLogger=DEBUG,D,E
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/logs.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = DEBUG
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
#log4j.appender.E.layout.
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
下面讲一下log4j.properties的配置参数
1 基本格式如下:
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
#配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
其中 [ level ]日志输出级别共有五级
?
借鉴: