日誌的學習點滴(2)

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) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值