1

我正在尝试使用org.perf4j.logback.JmxAttributeStatisticsAppenderappender 将 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>

您会注意到,我将生成的性能统计信息附加AsyncCoalescingStatisticsAppenderfileAppenderperf4jJmxAppender。perfStats.log 文件获取以下行...

Tag          Avg(ms)         Min         Max     Std Dev       Count

Import        667.0         667         667         0.0           1

...但是 jconsole 针对 ImportMean、ImportMax、ImportMin 等显示所有内容为 0。

我究竟做错了什么?

4

1 回答 1

0

In the CoalescingStatistics the TimeSlice value is set to 1000 (1s), so in the JMX you will only see the last second.

Try to increase this value and see if it helps.

于 2013-01-29T08:22:43.953 回答