考慮到性能問題,不打算引入額外的log4j.jar包。在struts的lib中有一個commons-logging-1.0.4.jar包,現在我來說一下它的運行機制。
在Struts中對日志功能的使用遵循以下的步驟:
如果你自己導入了log4j.jar包并在WEB-INF/classes目錄下添加log4j.properties,即可啟用log4j。(注意:不需要加入commons-logging.properties文件;還有如果項目中有spring加入spring會自動加入log4j.jar包)
如果存在JDK1.4, 使用JDK1.4
如果兩者都不存在,就使用SimpleLog。
現在我重點來說我們這個BSPF項目中用到的比較高性能的SimpleLog類的具體配置。
其實很簡單,只要在你的WEB-INF/classes目錄中加入兩個properties配置文件就OK了。
###這個是commons-logging.properties文件
###指定你要用的日志類
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
###這個是simplelog.properties文件
###首先指定你的輸出級別:必須為"trace", "debug", "info", "warn", "error", or "fatal"
###從trace到fatal級別越來越高,低級包括高級別的日志輸出,默認為info
org.apache.commons.logging.simplelog.defaultlog=fatal
###輸出的日志消息中是否包含當前日志器實例的簡寫名字,默認true
org.apache.commons.logging.simplelog.showShortLogname
###輸出的日志消息中是否應包含當前時間信息,默認false
org.apache.commons.logging.simplelog.showdatetime
###最后注意一點SimpleLog類把日志輸出到System.err中,無需你自己配置
###雖然現在不能到文件中,但以后可以改源碼或換成log4j還是比較方便,不用改程序的源碼
2
3 import org.apache.commons.logging.LogFactory;
4 import org.apache.commons.logging.Log;
5
6 public class LoggingTest {
7
8 //SimpleLog會為每個類單獨輸出一個日志
9 private static Log log = LogFactory.getLog(LoggingTest.class);
10
11 public static void main(String[] args) {
12 if (log.isTraceEnabled()) {
13 log.trace("Test logging trace level");
14 }
15 if (log.isDebugEnabled()) {
16 log.debug("Test logging debug level");
17 }
18 if (log.isInfoEnabled()) {
19 log.info("Test logging info level");
20 }
21 if (log.isWarnEnabled()) {
22 log.warn("Test logging warn level");
23 }
24 if (log.isErrorEnabled()) {
25 log.error("Test logging error level");
26 }
27 if (log.isFatalEnabled()) {
28 log.fatal("Test logging fatal level");
29 }
30 }
31
32 }
33