Perf4j
Это анализ производительности и проверка плагина для приложения. Его можно интегрировать с Spring с помощью Spring AOP. Он создает файл журнала, который передается синтаксическому анализатору для анализа и получения соответствующей информации. Он может обеспечить среднее, среднее, стандартное отклонение по умолчанию. Для получения более общей информации посетите http://perf4j.codehaus.org/index.html.
Как настроить Perf4j. Для обычной настройки вам просто нужно добавить банку perf4j и создать экземпляр 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. создайте свой собственный logback.xml, который будет использоваться perf4j неявно, содержимое 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 вам нужно добавить тег aspectj, который активирует аннотацию @Profiled для perf4j.
(Примечание. Что такое аннотация @Profiled?: вы добавите этот тег ко всем методам во всех классах, которые вызываются из экземпляра Spring или используют внедрение зависимостей. Объект в основном должен быть зарегистрирован в контексте Spring, и метод должен вызываться объект, который зарегистрирован в контексте Spring.Я потратил один день на размышления, почему мой метод не был зарегистрирован, затем я понял, что объект, который я тестировал, не был частью контекста Spring.
ОК, код, который вам нужно добавить в xml конфигурации spring,
<!-- 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. Создайте класс Test, который будет реализовывать аннотацию @Profiled.
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. Хорошо, теперь вы все настроили, осталось только тестовый класс, который запустит контекст 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 для отображения одной строки на консоли.
Команда мониторинга 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.
person
Vishal
schedule
19.09.2012