Perf4j
これは、アプリケーションのパフォーマンス分析およびチェック プラグインです。スプリング AOP を使用してスプリングと統合できます。関連情報を分析して生成するためにパーサーに提供されるログ ファイルを作成します。デフォルトで、平均、平均、標準偏差を提供できます。より一般的な情報については、http://perf4j.codehaus.org/index.htmlを確認してください。
Perf4j のセットアップ方法。通常のセットアップでは、perf4j jar を追加し、監視するすべてのコード スニペットの StopWatch インスタンスを作成するだけです。
StopWatch stopWatch= new StopWatch(“snipletTagName”)
…
//{your code sniplet}
…
stopwatch.stop();
これにより、perf4j モニターが作成され、コンソールにログ情報が表示されます。
このドキュメントの主な目的は、perf4j と spring の統合をセットアップごとに理解することです。
1.以下のJarファイルをすべて追加します。
1.perf4j-0.9.16-slf4jonly.jar
2.aspectjweaver-1.6.12.jar
3.aopalliance-1.0.jar
4.commons-logging-1.1.1.jar
5.logback-classic-1.0.7.jar
6.logback-core-1.0.7.jar
7.slf4j-api-1.7.1.jar
8.perf4j-0.9.16.jar
9.aspectjrt-1.6.1.jar
10.commons-jexl-1.1.jar
11.asm-1.5.3.jar
12.cglib-2.1_3.jar
これらすべての jar がクラスパスに含まれていることと、Spring ライブラリがあることを確認してください。
2. perf4j によって暗黙的に使用される独自の logback.xml を作成します。logback.xml の内容は次のようになります。
<configuration>
<appender name="perf4jFileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logs/perf4j.log</File>
<encoder>
<Pattern>%date %-5level [%thread] %logger{36} [%file:%line] %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logs/perf4j.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
</appender>
<appender name="CoalescingStatistics"
class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
<param name="TimeSlice" value="1" />
<appender-ref ref="perf4jFileAppender" />
</appender>
<appender name="RootConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level [%thread] %logger{36} [%file:%line] %msg%n
</pattern>
</layout>
</appender>
<!-- Loggers -->
<!-- The Perf4J logger. Note that org.perf4j.TimingLogger is the value of
the org.perf4j.StopWatch.DEFAULT_LOGGER_NAME constant. Also, note that additivity
is set to false, which is usually what is desired - this means that timing
statements will only be sent to this logger and NOT to upstream loggers. -->
<logger name="org.perf4j.TimingLogger" additivity="false">
<level value="DEBUG" />
<appender-ref ref="CoalescingStatistics" />
<appender-ref ref="perf4jFileAppender" />
<appender-ref ref="RootConsoleAppender" />
</logger>
</configuration>
3.Spring 構成ファイルで、perf4j の @Profiled アノテーションを有効にする aspectj タグを追加する必要があります。
(注: @Profiled アノテーションとは何ですか?: このタグは、Spring インスタンスから呼び出される、または依存性注入を使用するすべてのクラスのすべてのメソッドに追加します。オブジェクトは基本的に Spring コンテキストに登録されている必要があり、メソッドはによって呼び出される必要がありますなぜ私のメソッドがログに記録されないのかを考えて 1 日を無駄にした後、テストしたオブジェクトが Spring コンテキストの一部ではないことに気付きました。
OK、Spring 構成 xml に追加する必要があるコードは次のとおりです。
<!-- this is my spring-context.xml -->
<beans>
<aop:aspectj-autoproxy>
<aop:include name="timingAspect" />
</aop:aspectj-autoproxy>
<bean id="timingAspect" class="org.perf4j.slf4j.aop.TimingAspect" />
<!-- this is the class that will be registered with the spring and now we can get this class and call the method that we need to monitor-->
<bean class="com.perf4jexample.Test" />
</beans>
4. @Profiled アノテーションを実装する Test クラスを作成します。
public class Test {
private String testVal;
public Test() {
// TODO Auto-generated constructor stub
}
@Profiled
public void testing() {
System.out.println("testt" );
}
public String getTestVal() {
return testVal;
}
public void setTestVal(String testVal) {
this.testVal = testVal;
}
}
5.OK これですべての設定が完了しました。残っているのは、Spring コンテキストを開始し、perf4j をロードするテスト クラスです。
public class Test(){
public static void main(){
AbstractApplicationContext context = new ClassPathXmlApplicationContext(
"spring-context.xml");
context.start();
Test bean = context.getBean(Test.class);
bean.testing();
}
これらの設定に従うことで、コンソール アペンダーを perf4j してコンソールに 1 行を表示できるようになることを願っています。
ログの Perf4j 監視コマンド:
パフォーマンス統計情報を生成するには、ロガー パスで実行します
java -jar perf4j-0.9.16.jar myLogger.log
グラフ生成用
java -jar perf4j-0.9.16.jar --graph perfGraphs.out myLogger.log
このチュートリアルが、Spring、perf4j、logback を Profiled アノテーションと統合するのに役立つことを願っています。