如何禁用AspectJ转储文件" ajcore.txt"

时间:2015-03-10 19:42:09

标签: java tomcat aspectj

我有一个Tomcat webapp,我使用AspectJ进行日志记录和指标,一切似乎都很好,但它会在根文件夹中创建多个文件,如ajcore.20150310.113255.780.txt。这个文件中没有例外,所以它们完全没用。

我发现了这个:https://eclipse.org/aspectj/doc/released/pdguide/ajcore.html

这表明使用org.aspectj.weaver.Dump.exception="false"应该禁用此行为,但文件仍然出现。有没有其他方法可以完全禁用此文件的创建?提到的另一个选项:org.aspectj.dump.directory也可以解决问题,但它似乎也无法解决。

这是文件的内容,以防万一:

---- AspectJ Properties --- 
AspectJ Compiler 1.7.1 built on Thursday Sep 6, 2012 at 16:39:22 GMT
---- Dump Properties --- 
Dump file: ajcore.20150310.113255.780.txt 
Dump reason: org.aspectj.weaver.BCException 
Dump on exception: true 
Dump at exit condition: abort
---- Exception Information ---
---- System Properties --- 
... My system properties here
---- Command Line --- Empty
---- Full Classpath --- Empty
---- Compiler Messages --- Empty

3 个答案:

答案 0 :(得分:1)

以下任一选项均可提供帮助:

  1. 在任何AspectJ编织发生之前执行此代码(如果可能):org.aspectj.weaver.Dump.setDumpOnExit(org.aspectj.bridge.IMessage.ABORT)
  2. 将此系统属性定义添加到java命令行:-Dorg.aspectj.weaver.Dump.condition=abort

答案 1 :(得分:0)

我觉得AJ核心转储很有用,因为在LTW编译过程中出现了一些错误:

Dump file: ajcore.20150310.113255.780.txt 
Dump reason: org.aspectj.weaver.BCException 

所以有一个例外,您应该调查并修复它。也许你的一些类正确地编写了日志代码,而有些则没有。以详细模式运行weaver并检查控制台输出,也许你会看到奇怪的东西。 AJ核心文件意味着weaver /编译器完全关闭(异常终止)。

至于实际问题,我认为这个

---- Command Line --- Empty

看起来很奇怪,好像没有命令行参数传递给织工。此外,没有异常实际记录是非常不寻常的。

你在哪个Java版本?我假设Java 7因为1.6很老,而Java 8需要AspectJ 1.8。无论如何,你可以尝试使用最新的AspectJ版本1.8.5或至少从旧版本的最新版本1.7.4,看看问题是否仍然存在?

答案 2 :(得分:0)

将此参数添加到您的 JVM 运行中:-Dorg.aspectj.weaver.Dump.exception=false

另见official docs