日誌的學習點滴(2)

来源:互联网 发布:适合的话剧知乎 编辑:程序博客网 时间:2024/06/02 16:04
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

3.4 配置接口

commons-logging的配置可在系统属性中设置,但是这是一个不好的习惯,系统

属性会影响同一jvm下的所有类,而且不好控制,所以配置commons-logging

最好位置在commons-logging.properties文件中。使用属性文件配置commons-logging时一定要把其放到软件系统的classpath下。

commons-logging.properties中可以对下面两个属性项进行设置:

org.apache.commons.logging.Log

commons-logging的缺省 LogFactory 按照这个项的值来实例化实现应用编程接

log的实例。如果这个项没被设置,LogFactory在软件系统的classpath下按下

面的顺序搜索实现log接口的类:

Log4J

JSDK 1.4

JCL SimpleLog

这个规则我们把它称为搜索策略。

org.apache.commons.logging.LogFactory 这个项覆盖缺省的LogFactory实现,用

来满足应用系统的特定需求,如重新定义搜索策略。
4.程式清單:
:以下兩個properies文件放在classes目錄下,log包會自動找到它們,然後編譯咝谐绦?就可以看到紀錄日誌得結果。
1.     commons-logging.properties
#設置紀錄日誌使用log4j
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
#設置紀錄日誌使用jdk1.4 logging包
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
#設置紀錄日誌使用LogKit
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogKitLogger
#設置紀錄日誌使用SimpleLog
#org.apache.commons.logging.Log=org.apache.commons.logging.impl. SimpleLog
 
 
2. log4j.properties
!log4j對這個屬性文件的解析觀察
log4j.debug=false
!以下兩個屬性還不知道什麼用
log4j.disableOverride=true
log4j.disable=INFO
 
!設置紀錄所有類的日誌的優先級別
log4j.rootCategory=DEBUG, dest1, dest2
 
!設置這個包紀錄日誌為假的話,dist1,dist2就不會記錄org.jarrywen.sample.logging.otherpackagelog.LoggingSample的日誌,只有dist3會記錄
!反之,會記錄,這樣就會重複紀錄
log4j.additivity.org.jarrywen.sample.logging.otherpackagelog.LoggingSample=false
!特別指定某個特殊包的日誌的級別和目標設備
log4j.category.org.jarrywen.sample.logging.otherpackagelog.LoggingSample=ERROR, dest3
 
!這個目標設備用來debug
log4j.appender.dest1=org.apache.log4j.ConsoleAppender
#log4j.appender.dest1.layout=org.apache.log4j.SimpleLayout
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%d %p %c - <%m> (%F.%M:%L) %t%n
 
!這個目標設備用來trace
log4j.appender.dest2=org.apache.log4j.RollingFileAppender
!該文件紀錄日誌的級別(INFO以上的級別不紀錄)
log4j.appender.dest2.Threshold=WARN
!文件保存路徑
log4j.appender.dest2.File=c:/log4jlog.htm
!是否往文件追加消息
log4j.appender.dest2.Append=true
!設置文件最大值
log4j.appender.dest2.MaxFileSize=100KB
!設置備份文件的最大數量
log4j.appender.dest2.MaxBackupIndex=10
 
!使用一個html格式來紀錄日誌
log4j.appender.dest2.layout=org.apache.log4j.HTMLLayout
!是否打印該消息的代碼行
log4j.appender.dest2.layout.LocationInfo=true
!設置該日誌的html文件的標題
log4j.appender.dest2.layout.Title=My app title
 
!這個目標設備用來trace指定類或包
log4j.appender.dest3=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.dest3.Threshold=ERROR
log4j.appender.dest3.File=c:/SpecPackageLog.htm
log4j.appender.dest3.Append=false
 
log4j.appender.dest3.layout=org.apache.log4j.HTMLLayout
log4j.appender.dest3.layout.LocationInfo=true
log4j.appender.dest3.layout.Title=My app title
 
3. LoggingSample.java
package org.jarrywen.sample.logging;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class LoggingSample {
    private Log log = LogFactory.getLog(getClass().getName());
    public static void main(String[] args) {
        LoggingSample LoggingSample = new LoggingSample();
        //trace,debug,info,warn,error,fatal
        //看看個種級別的日誌紀錄
        LoggingSample.trace();
        LoggingSample.debug();
        LoggingSample.info();
        LoggingSample.warn();
        LoggingSample.error();
        LoggingSample.fatal();
        org.jarrywen.sample.logging.otherpackagelog.LoggingSample LoggingSample1 = new org.jarrywen.sample.logging.otherpackagelog.LoggingSample();
        LoggingSample1.trace();
        LoggingSample1.debug();
        LoggingSample1.info();
        LoggingSample1.warn();
        LoggingSample1.error();
        LoggingSample1.fatal();
 
    }
    public LoggingSample() {
    }
    public void trace() {
        //if (log.isTraceEnabled())
            log.trace("trace---系統開始trace紀錄日誌");
    }
 
    public void debug() {
        //if (log.isDebugEnabled())
            log.debug("debug---系統開始debug紀錄日誌");
    }
 
    public void info() {
        //if (log.isInfoEnabled())
            log.info("info---系統開始info紀錄日誌");
    }
 
    public void warn() {
        //if (log.isWarnEnabled())
            log.warn("warn---系統開始warn紀錄日誌");
    }
 
    public void error() {
        //if (log.isErrorEnabled()){
            log.error("error---系統開始error紀錄日誌", new Throwable("測試log.error"));
        //}
    }
 
    public void fatal() {
        //if (log.isFatalEnabled())
            log.fatal("fatal---系統開始fatal紀錄日誌", new Throwable("測試log.fatal"));
    }
}
4. org.jarrywen.sample.logging .LoggingSample.java
package org.jarrywen.sample.logging.otherpackagelog;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class LoggingSample {
    private Log log = LogFactory.getLog(getClass().getName());
    public static void main(String[] args) {
        LoggingSample LoggingSample = new LoggingSample();
        //trace,debug,info,warn,error,fatal
        //看看個種級別的日誌紀錄
        LoggingSample.trace();
        LoggingSample.debug();
        LoggingSample.info();
        LoggingSample.warn();
        LoggingSample.error();
        LoggingSample.fatal();
    }
    public LoggingSample() {
    }
    public void trace() {
        //if (log.isTraceEnabled())
            log.trace("trace---系統開始trace紀錄日誌");
    }
 
    public void debug() {
        //if (log.isDebugEnabled())
            log.debug("debug---系統開始debug紀錄日誌");
    }
 
    public void info() {
        //if (log.isInfoEnabled())
            log.info("info---系統開始info紀錄日誌");
    }
 
    public void warn() {
        //if (log.isWarnEnabled())
            log.warn("warn---系統開始warn紀錄日誌");
    }
 
    public void error() {
        //if (log.isErrorEnabled()){
            log.error("error---系統開始error紀錄日誌", new Throwable("測試log.error"));
        //}
    }
 
    public void fatal() {
        //if (log.isFatalEnabled())
            log.fatal("fatal---系統開始fatal紀錄日誌", new Throwable("測試log.fatal"));
    }
}

日誌的學習點滴(2) 

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击