将perf4j性能统计信息公开给JMX不起作用

时间:2012-08-02 14:01:53

标签: java jmx logback perf4j

我试图使用org.perf4j.logback.JmxAttributeStatisticsAppender appender将perf4j生成的性能统计信息暴露给JMX,但它不起作用。

以下是我的logback.xml的相关部分

    <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
        <file>${catalina.base}/logs/perfStats.log</file>
        <encoder>
            <pattern>%msg%n</pattern>
    </encoder> 
    </appender>

    <appender name="perf4jJmxAppender" class="org.perf4j.logback.JmxAttributeStatisticsAppender">
        <param name="TagNamesToExpose" value="Import"/>
        <param name="NotificationThresholds" value="ImportMax(&lt;10)"/>
    </appender>

<appender name="CoalescingStatistics"
              class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
        <param name="TimeSlice" value="1000"/>
    <appender-ref ref="fileAppender"/>
        <appender-ref ref="perf4jJmxAppender"/>
</appender>

<logger name="org.perf4j.TimingLogger" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="fileAppender"/>
        <appender-ref ref="CoalescingStatistics"/>
    </logger>

正如您将注意到的那样,我将AsyncCoalescingStatisticsAppender生成的效果统计信息附加到fileAppenderperf4jJmxAppender。 perfStats.log文件获取以下行...

Tag          Avg(ms)         Min         Max     Std Dev       Count

Import        667.0         667         667         0.0           1

...但是jconsole会显示针对ImportMean,ImportMax,ImportMin等的所有内容。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在CoalescingStatistics中,TimeSlice值设置为1000(1s),因此在JMX中,您只能看到最后一秒。

尝试增加此值,看看是否有帮助。