问题标签 [perf4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
619 浏览

java - 如何在 log4j2.xml 中添加自定义附加程序

我有一个要使用 perf4j 的应用程序。我想在 log4j2.xml 中的语法已经改变。在这里,我找不到为自定义 appnder 类声明类属性的方法。我现在log4j2.xml

现在我想添加更多的附加程序,比如

如何在 log4j2.xml 中添加此附加程序

0 投票
0 回答
377 浏览

java - 秒表工作正常,但在使用 @Profiled 注释时无法记录

我对 per4j 不太了解,因为我是新手,我正在尝试将 perf4j 计时添加到我的 maven 项目中。我通过查看一些示例创建了项目设置。

这是我的log4j.xml文件

这是我的 aom.xml 文件

当我使用运行示例主类时,StopWatch我正在获取带有计时详细信息的日志文件,但是当我使用@Profiled注释时,它无法创建计时器日志。它正在创建新的日志文件,但该文件将为空。

我的示例类如下所示:

谁能告诉我我在使用注释时做错了什么@Profiled,当我使用时一切都很顺利StopWatch

0 投票
1 回答
404 浏览

java - 在没有其他库的情况下使用 perf4J Profiled 注解(例如 log4j)

使用 perf4J 时,此代码运行良好:

但是在使用@Profiled 时,如何以最少的代码输出或获取度量:

0 投票
1 回答
121 浏览

grails - 无法在 Grails 2.5.1 上安装 Perf4J 集成插件

我正在尝试为 Grails 安装Perf4J 集成插件

我已经compile ":perf4j:0.1.1"在 BuildConfig.groovy 中添加了,但是当我尝试刷新我的依赖项时,我得到:

发生第二个错误是因为GrailsPluginUtils已将 package 从 更改org.codehaus.groovy.grails.plugins.supportorg.codehaus.groovy.grails.plugins。我在Github fork上找到了一个固定版本。

但即使我尝试编译从上面链接的 Github 存储库下载的插件源,我仍然得到org.perf4j.log4j.Log4JStopWatch.

有谁知道如何解决它?

0 投票
0 回答
318 浏览

spring - AspectJ + Perf4J + Spring 和@Profiled 注释?

我根本无法让 AspectJ 工作,并且在学习了 10 个不同的教程之后,我已经没有想法了。

这就是我想要做的......

我有一个 Spring 应用程序。它使用 Spring、Perf4J 和 Now Aspect(如果它可以工作的话!),我想在我的公共方法的 tog 中使用 @Profiled("some tag here")。就是这样,没什么太花哨的。

这是我要运行的代码:

这是我在 Maven 中使用的 POM 依赖项,用于设置所有内容。

这是方面 bean 文件:

这是我将 XML beans 文件带入(在 spring 应用程序上下文文件中)的方式:

现在,应用程序编译、运行并打印了我的 System.out.println 行,但我完全没有看到与时间相关的任何内容。

0 投票
1 回答
298 浏览

intellij-idea - 在 intellij 中启用 perf4j 分析注释

我正在尝试在 intellij 中启用 perf4j 注释,但我正在努力正确配置 AspectJ。更具体地说,日志文件已正确创建,但缺少注释方法中的任何数据。

这些是配置的相关摘录:

logback.xml

aop.xml

最后,相关的测试方法使用@Profiled 注释进行标记,这是在 aop.xml 中定义的包的一部分。

此配置导致生成日志文件(这表明 logback.xml 配置正确,但它仅包含标头,没有来自标记方法的统计信息。

我的主要问题是 AspectJ 配置应该在 Intellij 中的什么位置,我已将 aop.xml 包含在 src 文件夹中手动创建的 META-INF 文件夹下,但我不确定 AspectJ 是否检测到这一点。

提前致谢

更新

自从我的第一篇文章以来,我在这方面取得了一些进展,特别是引入了两个更改:i) 包含 -javaagent:lib\aspectjweaver.jar ii) 将 aop.xml 移动到 META-INF 文件夹中。现在正在提取 aop 配置,因为它记录了配置详细信息,并且还提到了正在分析的方法。现在的问题是被分析的线程崩溃,它没有记录任何异常,但通过调试,该问题似乎与尝试实例化 org.aspectj.runtime 时 org.aspectj.runtime.reflect.Factory 中的 ClassNotFoundException 有关。反射.JoinPointImpl。

为了隔离问题,我删除了 aspectJ 的所有 maven 导入并使用了安装包提供的 jar,但问题仍然存在,而且应用程序在没有任何日志记录的情况下崩溃的事实也使得问题跟踪变得更加困难。

更新

澄清:

  • 在阅读了有关此内容的更多信息后,包括返回链接中的手册(谢谢),我意识到我正在混淆加载时间/编译时间方法。从那时起,我尝试了指南中描述的两种方法,但结果与我之前的更新中描述的结果相同。
  • 如上所述,我确实使用 aspectj weaver 选项(-javaagent)启动应用程序
  • 构建是通过 IDE 完成的,如上所述,目前我已经从 Maven 中删除了 aspectj / perf4j 依赖项并链接到本地​​ jar
  • 如前所述,aop.xml 确实如更新中所述被拾取,没有错误或警告,只是确认编织方法
0 投票
1 回答
829 浏览

spring - 创建名称为“projectingArgumentResolverBeanPostProcessor”的 bean 时出错:仅 Java 5 支持 @annotation 切入点表达式

我正进入(状态:

在类路径资源 [org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class] 中定义名称为“projectingArgumentResolverBeanPostProcessor”的 bean 创建错误:bean 初始化失败;嵌套异常是 java.lang.IllegalArgumentException: 错误 @annotation 切入点表达式仅在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581) ~[spring- beans-5.0.9.RELEASE.jar:5.0.9.RELEASE] 尝试在基本 spring-boot 应用程序中添加 per4j 时出错

所以我一直在尝试将 perf4j 日志添加到我的 Spring Boot 应用程序中。在这里,我在 Maven 中设置了 java 8。

在我的本地,我也只安装了 Java 8。当我在为 perf4j 添加更改后运行应用程序时,它会引发上述错误。当我深入了解错误时,我可以看到:

原因:java.lang.IllegalArgumentException:错误 @annotation 切入点表达式仅在 Java 5 合规级别或更高版本中受支持

类似的问题已经存在创建名为“projectingArgumentResolverBeanPostProcessor”的 bean 但没有解决方案时出错。

这是详细的错误:

org.springframework.beans.factory.BeanCreationException:在类路径资源[org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class]中定义名称为“projectingArgumentResolverBeanPostProcessor”的bean创建错误:bean初始化失败;嵌套异常是 java.lang.IllegalArgumentException: 错误 @annotation 切入点表达式仅
在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581) ~[spring- beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) ~[spring-beans-5.0.9.RELEASE.jar :5.0.9.RELEASE]
在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.beans .factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:315)~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)~[spring -beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:236) ~[spring-context-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.context.support.AbstractApplicationContext。 registerBeanPostProcessors(AbstractApplicationContext.java:710)~[spring-context-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535)~[spring -context-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.5. RELEASE.jar:2.0.5.RELEASE]
在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:780) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java :412) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
在 org.springframework.boot.SpringApplication.run(SpringApplication.java:333) [spring-boot-2.0.5.RELEASE. jar:2.0.5.RELEASE]
在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1277) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
在 org.springframework.boot .SpringApplication.run(SpringApplication.java:1265) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
在 com.calamp.connect.ae.Application.main(Application.java:29) [classes/:na] Caused by: java.lang.IllegalArgumentException: error @annotation 切入点表达式仅在 Java 5 合规级别或更高版本中受支持
在 org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:317) ~[aspectjtools-1.6.2.jar:na]
在 org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:227) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.aop.aspectj.AspectJExpressionPointcut.obtainPointcutExpression(AspectJExpressionPointcut.java:198) ~[spring-aop-5.0.9.RELEASE .jar:5.0.9.RELEASE]
在 org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:177) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE] 在 org.springframework.aop.support.AopUtils。 canApply(AopUtils.java:225) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:288) ~[spring -aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:320) ~[spring-aop-5.0.9.RELEASE.jar: 5.0.9.RELEASE]
在 org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:126) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:95) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.aop.framework。 autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:76) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java :352) ~[spring-aop-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:304) ~[spring-aop- 5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:431) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
在 org.springframework.beans.factory。 support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1703) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java :573) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
...省略了15个常用框架

我添加了以下依赖项以在 pom.xml 中添加 perf4j 日志记录,如果这可以为​​任何人提供任何线索:

错误不应该出现,应用程序应该运行。

0 投票
0 回答
147 浏览

java - 将 SLF4J 秒表记录到不同的文件

我在我的 Java SpringBoot 应用程序中使用 SLF4J StopWatch 来记录方法执行时间以进行监控。我正在使用 Perf4J jar 来获取统计信息和图形输出。我的所有 StopWatch 日志都会附加到我的 Perf4J 日志文件中。但是我想将它们记录在两个或多个不同的日志文件中,因为我需要分别分析控制器方法和第三方 API 调用。有没有办法做到这一点?就我的目的而言,Perf4J 有哪些好的替代品?

0 投票
0 回答
15 浏览

spring-boot - 打印log4j2 springboot中每条日志记录的通用ID

我正在使用 log4j2Stopwatch 将事件记录到日志文件中。我的 perf4j 版本是 0.9.16。它打印默认消息

我想为日志文件中的每条记录添加一个通用 ID,如下所示。

我曾经MDC.put("id",value)以上述格式登录。

我想知道是否有任何其他方法可以将“id”等变量添加到日志事件而不是MDC.put("key", value). 我正在使用org.apache.log4j.MDC.