以下一段話來自:百度百科
如果你開發的是類庫或者嵌入式組件,那麼就應該考慮採用SLF4J,因爲不可能影響最終用戶選擇哪種日誌系統。在另一方面,如果是一個簡單或者獨立的應用,確定只有一種日誌系統,那麼就沒有使用SLF4J的必要。假設你打算將你使用log4j的產品賣給要求使用JDK 1.4 Logging的用戶時,面對成千上萬的log4j調用的修改,相信這絕對不是一件輕鬆的事情。但是如果開始便使用SLF4J,那麼這種轉換將是非常輕鬆的事情。
今天來測試一下slf4j的使用和它的魅力。
一般現在java項目都是web項目,所以我們的試驗項目就採用web項目測試。
1.新建web項目slf4jdemo
2.引用jar包
這裏需要注意的就是slf4j對應的log4j的版本,的那個人你也可以選擇其他的日誌系統。
log4j-1.2.12.jar
servlet2.5-jsp2.1-api.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
3.添加Log4j的配置文件Log4j.properties
這裏需要說明一下,Log4j本身的默認路徑是/WEB-INF/classes/目錄下的,所以千萬別放錯位置了。
#log4j logger FATAL=0 ERROR=3 WARN=4 INFO=6 DEBUG=7
#log4j.rootLogger = DEBUG, a1
log4j.rootLogger = OFF
### direct log messages to stdout ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.logger.org =ERROR, a1
log4j.logger.net = ERROR, a1
log4j.logger.com.qisentech = DEBUG, a1
log4j.appender.a1 = org.apache.log4j.RollingFileAppender
log4j.appender.a1.File = ${rootPath}/webplus.log
log4j.appender.a1.MaxFileSize = 10000KB
log4j.appender.a1.MaxBackupIndex = 10
log4j.appender.a1.layout = org.apache.log4j.PatternLayout
log4j.appender.a1.layout.ConversionPattern = %d [%t](%F:%L)%c %-5p - %m%n
#log4j.rootLogger=WARN, stdout
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
細心一點看配置信息,可以看到一個${rootPath},選擇我們就要初始化這個變量。
4.新建初始化Servlet
/*
* 文 件 名 : com.qisentech.slf4j.demo.WebplusContextStart.java
* 創建日期 : 2013-8-23 11:20:48
* 創 建 者 : qsyang
*/
package com.qisentech.slf4j.demo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* @author qsyang
* @version 1.0
*/
public class WebplusContextStart extends HttpServlet {
@Override
public void init() throws ServletException {
System.setProperty("log4j.configuration", "Log4j.properties");
String contextPath = this.getServletContext().getRealPath("/");
System.setProperty("rootPath", contextPath);
}
}
我們設置了Log4j的默認參數log4j.configuration和我們配置文件變量rootPath。
5.在類中使用slf4j打印日誌
引用方式:
Logger _log = LoggerFactory.getLogger(Slf4jTest.class);
注意,這裏的對象引用是:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
再看下打印方式:
_log.debug(“調試日誌:XXXXX”);
附上全部源碼:
/*
* 文 件 名 : com.qisentech.slf4j.demo.Slf4jTest.java
* 創建日期 : 2013-8-23 11:02:20
* 創 建 者 : qsyang
*/
package com.qisentech.slf4j.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* @author qsyang
* @version 1.0
*/
public class Slf4jTest {
private static Logger _log = LoggerFactory.getLogger(Slf4jTest.class);
public static void testDebug(String info) {
System.out.println("testDebug");
_log.debug(info);
}
public static void testInfo(String info) {
System.out.println("testInfo");
_log.info(info);
}
public static void testWarn(String info) {
System.out.println("testWarn");
_log.warn(info);
}
public static void testError(String info) {
System.out.println("testError");
_log.error(info);
}
}
5.不要忘了配置web.xml
<!-- Webplus 環境初始化(必須啓動) -->
<servlet>
<servlet-name>WebplusContextStart</servlet-name>
<servlet-class>com.qisentech.slf4j.demo.WebplusContextStart</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
這樣整個就成功了。下面將源碼下載地址附上,有興趣可以去下載。