<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
    數據加載中……

    精通Log4j

    ?log4j雖然總的來說是比較容易使用的,但是要是想比較精通的操縱它還是有很多地方值得探討的。
    ??? 這幾天有空,把項目中大家用到的log4j實現的功能分了一下類,大致分為下面三類:
    ??? <1>所有的日志信息都輸出到log.log.
    ??? <2>對于一些特殊的日志(如啟動時候的日志),輸出到log/startup/startup.log.
    ??? <3>對于某些特殊包下面的日志,如com.aspire包下面的error信息都輸出到error.log???
    ??? 有了這幾個功能,相信對于大部分的系統都是夠用的了,下面這個例子就是實現了這幾個功能:
    ??? (至于其他的一些配置,如格式這些的就不說明,有很多這種資料)
    ???
    ??? ***********? log4j 配置文件? ************???
    ???
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="

    <appender name="file" class="org.apache.log4j.RollingFileAppender">
    ?<param name="File" value="log.log"/>
    ?<layout class="org.apache.log4j.PatternLayout">
    ?<param name="ConversionPattern" value=" %d{ISO8601} [%c]- %m%n"/>
    ?</layout>
    </appender>

    <appender name="error" class="org.apache.log4j.RollingFileAppender">
    ??<param name="File" value="error.log"/>
    ??<param name="MaxBackupIndex" value="300"/>
    ??<param name="Encoding" value="GB2312"/>
    ??<param name="MaxFileSize" value="20MB"/>
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d{ISO8601} %p [%c] - [%m]%n"/>
    ??</layout>
    ??? <filter class="org.apache.log4j.varia.LevelRangeFilter">
    ??<!-- 過濾,只記錄error信息-->
    ??<param name="LevelMin" value="error"/>
    ??<param name="LevelMax" value="error"/>
    ??<param name="acceptOnMatch" value="true"/>
    ??? </filter>
    </appender>
    <appender name="startup" class="com.aspire.TimeSizeRollingFileAppender">
    ??<!--該類使自己從FileAppender派生,可以自己控制輸出文件的路徑 -->
    ??<param name="File" value="log/startup/startup.log" />
    ??<param name="Encoding" value="GBK" />
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%m %d{ISO8601}- %m%n %p %l%n" />
    ??</layout>
    </appender>

    <logger name="biz.startup">
    <!--Logger logger = Logger.getLogger("biz.startup") 可以這樣來調用本logger-->
    ??<level value="debug" />
    ??<appender-ref ref="startup" />
    </logger>

    <logger name="com.aspire" additivity="false">
    <!--Log log = LogFactory.getLog(TestLog4j.class) 此時如果TestLog4j
    ??? 位于com.aspire包下面,那么使用本logger
    ?-->
    ??<level value="debug"/>
    ??<appender-ref ref="error"/>
    </logger>
    <root>
    <level value="info"/>
    <!-- 默認輸出到log.log-->
    <appender-ref ref="file"/>
    </root>
    </log4j:configuration>

    ***********? log4j 配置文件結束 ************

    **********? 派生的TimeSizeRollingFileAppender類*****
    package com.aspire;

    import org.apache.log4j.FileAppender;
    import org.apache.log4j.spi.ErrorCode;
    import java.io.File;
    import java.io.IOException;

    public class TimeSizeRollingFileAppender
    ??? extends FileAppender
    ??? implements ErrorCode {

    ? private final static String FS = System.getProperty("file.separator");
    ? public TimeSizeRollingFileAppender() {
    ? }
    ? public void setFile(String file) {
    ??? String val = file.trim();
    ??? File domain = new File(".");
    ??? try {
    ????? fileName = domain.getCanonicalPath() + FS + val;
    ??? }
    ??? catch (IOException ex) {
    ????? ex.printStackTrace();
    ??? }
    ? }
    }

    ********** TimeSizeRollingFileAppender 類結束 ******

    ************ 調用示例 TestLog4j類 **************
    package com.aspire;

    import org.apache.log4j.Logger;
    import org.apache.log4j.LogManager;
    import org.apache.commons.logging.LogFactory;
    import org.apache.log4j.xml.DOMConfigurator;
    import org.apache.commons.logging.Log;

    public class TestLog4j {
    ? private Logger logger = Logger.getLogger("biz.startup");
    ? private Log log = LogFactory.getLog(TestLog4j.class);

    ? public static void config(){
    ??? DOMConfigurator.configure("conf\\log4jConf.xml");
    ? }
    ? public void Test(){
    ??? /**
    ???? * error > warn > info > debug
    ???? */
    ??? logger.error("*****error*****");
    ??? logger.debug("****debug*****");
    ??? logger.warn("*****warn******");
    ??? logger.info("*****info******");
    ??? log.error("中華之崛起!");
    ? }
    ? public static void main(String [] argv){
    ??? TestLog4j t = new TestLog4j();
    ??? TestLog4j.config();
    ??? t.Test();
    ? }
    }

    ***************? TestLog4j end ***********

    posted on 2006-04-26 12:59 月亮 閱讀(400) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久草视频免费在线观看| www.xxxx.com日本免费| 亚洲一级免费毛片| 久久精品国产亚洲AV高清热| 久久久久久成人毛片免费看| 亚洲AV无码1区2区久久| 99久久人妻精品免费二区| 亚洲美女大bbbbbbbbb| 麻豆视频免费播放| 色天使亚洲综合在线观看| 天天操夜夜操免费视频| 春暖花开亚洲性无区一区二区 | 亚洲av成人一区二区三区| 成人免费在线看片| 中文有码亚洲制服av片| 国产一级大片免费看| 免费一级毛suv好看的国产网站| 亚洲日韩精品无码专区网站| 亚洲免费观看视频| 精品亚洲AV无码一区二区| 成人爱做日本视频免费| 一级毛片a免费播放王色电影| 亚洲综合图色40p| 51视频精品全部免费最新| 一本色道久久88—综合亚洲精品 | 亚洲国产精品一区二区第四页| 中国在线观看免费的www| 国产亚洲精品xxx| 免费福利网站在线观看| 国内成人精品亚洲日本语音| 亚洲人成图片小说网站| xx视频在线永久免费观看| 国产精品亚洲色婷婷99久久精品| 国产精品亚洲产品一区二区三区| 免费精品一区二区三区第35| 亚洲色大成网站WWW国产| 国产亚洲精品影视在线产品| 免费三级毛片电影片| 中美日韩在线网免费毛片视频| 亚洲一区二区三区夜色| 免费一级毛片免费播放|