首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

slf4j简介 log4j.properties简略配置

2012-06-26 
slf4j简介 log4j.properties简单配置来源http://www.cnblogs.com/tsingxu/archive/2011/11/06/2238453.htm

slf4j简介 log4j.properties简单配置

来源http://www.cnblogs.com/tsingxu/archive/2011/11/06/2238453.html

?

?准确的说,slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade(外观),允许用户在部署最终应用时方便的变更其日志系统。

? ? 外观模式

slf4j简介 log4j.properties简略配置

? ? 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
? 严重: test error...

在选用?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 ]日志输出级别共有五级

?

借鉴:
http://www.cnblogs.com/iAdu/articles/1908983.htmlhttp://www.cnblogs.com/kid-li/archive/2006/07/10/446904.html

热点排行