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

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

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

    perf4j使用三(log4j集成)

    Perf4j最主要的一個好處就是可以跟log4j或者logback來性能分析和監控線上運行的程序。集成的方式主要是:自定義log4j的appenders通過標準的配置加入到log4j中去(后面會有配置的例子)。有一個要注意的地方就是需要使用log4j的1.2.14版本或者更高版本。由于我一般都是使用log4j,所以對于logback的集成我就不描述了,我覺得應該差不多的。

     

    Perf4j最重要的appender就是AsyncCoalescingStatisticsAppender,它會把一段時間內StopWatch的信息匯總到一個獨立的GroupedTimingStatistics日志信息,然后把這個獨立的信息傳給下游的appenders,比如fileappenders,這樣就可以寫到文件中去了。也可以傳給per4j的其他自定義appenders。

     

    接下來我們看一個log4j.xml的例子,有一個限制,如果要使用AsyncCoalescingStatisticsAppender就只能使用xml文件而不能使用properties文件。

     

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

     

    <log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">

        <!--

             配置控制臺輸出

        -->

        <appender name="console" class="org.apache.log4j.ConsoleAppender">

            <layout class="org.apache.log4j.PatternLayout">

                <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>

            </layout>

        </appender>

     

        <!-- Perf4J appenders -->

        <!--

           AsyncCoalescingStatisticsAppender收集StopWatch的日志信息并傳送到下游的文件appenders

        -->

        <appender name="CoalescingStatistics"

                  class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">

            <!--

                 TimeSlice配置多少時間間隔去做一次匯總寫入文件中

                 默認值是 30000 ms

            -->

            <param name="TimeSlice" value="10000"/>

            <appender-ref ref="fileAppender"/>

        </appender>

     

        <!-- 把匯總的perf4j的日志信息寫到perfStats.log文件中去 -->

        <appender name="fileAppender" class="org.apache.log4j.FileAppender">

            <param name="File" value="/home/perfStats.log"/>

            <layout class="org.apache.log4j.PatternLayout">

                <param name="ConversionPattern" value="%m%n"/>

            </layout>

        </appender>

     

        <!-- Loggers -->

        <!-- 

           配置perf4j logger

           Additivity設置成false主要因為是不想讓代碼運行時間的日志輸出給上游appenders,即不要在控制臺輸出。

        -->

        <logger name="org.perf4j.TimingLogger" additivity="false">

            <level value="INFO"/>

            <appender-ref ref="CoalescingStatistics"/>

        </logger>

     

        <!-- 

           Root logger打印所有日志,但不包含perf4j的信息。原因是在TimingLogger配置中設置了additivityfalse

        -->

        <root>

            <level value="INFO"/>

            <appender-ref ref="console"/>

        </root>

    </log4j:configuration>

     

     

    黃色背景是perf4j的配置信息。其他都是log4j的基本配置。下面是測試perf4j與log4j集成的代碼。

    package com.baowu.perf4j;

     

    import org.apache.log4j.Logger;

    import org.perf4j.StopWatch;

    import org.perf4j.log4j.Log4JStopWatch;

     

    public class Perf4JAppenderExample {

        public static void main (String[] args) throws Exception {

            Logger rootLogger = Logger.getRootLogger();

            for (int i = 0; i < 10; i++) {

                // Log4JStopWatch默認使用org.perf4j.TimingLogger這個類

                StopWatch stopWatch = new Log4JStopWatch();

                //模擬代碼運行時間

                Thread.sleep((long) (Math.random() * 1000L));

                //打印到控制臺

                rootLogger.info("Normal logging messages only go to the console");

                stopWatch.lap("firstBlock");

                Thread.sleep((long) (Math.random() * 2000L));

                stopWatch.stop("secondBlock");

            }

        }

    }

     

    運行代碼。

    控制臺輸出:

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

    INFO root - Normal logging messages only go to the console

     

    文件輸出:


     

    輸出格式也可以改成CSV格式。配置:

    <appender name="fileAppender" class="org.apache.log4j.FileAppender">

            <param name="File" value="/home/perfStats.log"/>

            <layout class="org.apache.log4j.PatternLayout">

                <param name="ConversionPattern" value="%m%n"/>

            </layout>

    </appender>

    org.apache.log4j.PatternLayout改成org.perf4j.log4j.StatisticsCsvLayout即可。

    具體的參數請查看api
    下載工程


    posted on 2012-04-16 13:59 yangpingyu 閱讀(4627) 評論(0)  編輯  收藏 所屬分類: java基礎

    <2012年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    linux

    產品交互

    分析,設計,架構

    安全

    技術牛人

    數據庫

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩免费视频一区| 免费无码肉片在线观看| 亚洲国产一成久久精品国产成人综合| 亚洲国产成人九九综合| 99久久国产热无码精品免费 | 一本岛高清v不卡免费一三区| 亚洲av无码无在线观看红杏| 中文字幕无码一区二区免费| 亚洲热线99精品视频| 最近免费mv在线观看动漫| 亚洲日韩图片专区第1页| 999国内精品永久免费观看| 亚洲区视频在线观看| 成年女人免费视频播放77777| 亚洲精品GV天堂无码男同| 又粗又硬免费毛片| 四虎国产精品永免费| 亚洲欧洲国产精品香蕉网| 久久国产精品免费专区| 亚洲人成777在线播放| 韩国免费三片在线视频| 色视频在线观看免费| 亚洲伊人久久精品影院| 一级毛片免费播放| 亚洲最大天堂无码精品区| 亚洲高清视频一视频二视频三| 一个人免费视频在线观看www| 久久久亚洲欧洲日产国码是AV| 毛片免费观看的视频| 一区二区三区AV高清免费波多| 亚洲AV无码专区亚洲AV伊甸园| 无码乱肉视频免费大全合集| 国产精品久久久久久亚洲小说| 亚洲精品美女久久久久99| 69天堂人成无码麻豆免费视频| 综合一区自拍亚洲综合图区| 亚洲精品无码不卡在线播HE| 波多野结衣在线免费观看| 免费无码午夜福利片 | 亚洲自国产拍揄拍| 亚洲精品无码专区2|