<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

    產品交互

    分析,設計,架構

    安全

    技術牛人

    數據庫

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产午夜亚洲精品| baoyu122.永久免费视频| 亚洲男人的天堂在线va拉文| 一级中文字幕免费乱码专区 | **真实毛片免费观看| jlzzjlzz亚洲jzjzjz| 亚洲高清无码在线观看| 免费人妻无码不卡中文字幕系 | a级成人毛片免费视频高清| 亚洲一卡二卡三卡| 国产精品亚洲mnbav网站 | 国产片免费在线观看| 你懂的免费在线观看网站| 国产尤物在线视精品在亚洲| 亚洲AV无码专区亚洲AV伊甸园| 亚洲小说区图片区另类春色| 69视频免费观看l| 日本一区二区三区在线视频观看免费 | 无码一区二区三区亚洲人妻| 亚洲av无码不卡| 免费在线观看理论片| 免费看黄视频网站| 中文字幕a∨在线乱码免费看| 亚洲精品中文字幕无乱码麻豆 | 欧洲亚洲综合一区二区三区| 亚洲美免无码中文字幕在线| 亚洲精品A在线观看| 成年美女黄网站18禁免费| 国产成人久久AV免费| 无码人妻一区二区三区免费视频 | 国产成人无码免费视频97| 亚洲免费视频在线观看| 高潮毛片无遮挡高清免费 | 四虎一区二区成人免费影院网址| 亚洲伦理一二三四| 亚洲av无码潮喷在线观看| 国产亚洲人成A在线V网站| 免费a级毛片永久免费| 免费看香港一级毛片| 我们的2018在线观看免费高清| 久久久精品免费国产四虎|