Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Aspectj加载时编织来记录我的源代码(包括测试),而不记录外部库_Java_Logging_Aspectj_Load Time Weaving - Fatal编程技术网

Java 使用Aspectj加载时编织来记录我的源代码(包括测试),而不记录外部库

Java 使用Aspectj加载时编织来记录我的源代码(包括测试),而不记录外部库,java,logging,aspectj,load-time-weaving,Java,Logging,Aspectj,Load Time Weaving,当测试只执行时,我使用AspectJ记录日志,所以我使用加载时编织。我将拦截器打包到一个jar文件中,用于另一个Maven项目。但是,使用下面的配置,aspectjweaver将编织外部库的方法。我希望它只编织我的源代码(包括测试),而不需要像这样的特定配置,以便使用像依赖项一样的通用配置 对不起,我的英语很差。非常感谢 在这个jar文件的aop.xml中,它喜欢 <aspectj> <aspects> <aspect name="log.Intercept

当测试只执行时,我使用AspectJ记录日志,所以我使用加载时编织。我将拦截器打包到一个jar文件中,用于另一个Maven项目。但是,使用下面的配置,aspectjweaver将编织外部库的方法。我希望它只编织我的源代码(包括测试),而不需要像
这样的特定配置,以便使用像依赖项一样的通用配置

对不起,我的英语很差。非常感谢

在这个jar文件的aop.xml中,它喜欢

<aspectj>
<aspects>
    <aspect name="log.Interceptor"/>
    <weaver options="-verbose -showWeaveInfo">
        <include within="*"/>
    </weaver>
</aspects>
</aspectj>

嗯,你不能一边吃蛋糕一边保存它。因此,您的解决方案要么是针对整个世界的通用切入点,要么是通过包含和/或排除实现的特定切入点

  • 在使用泛型库构建或部署项目时,您可以尝试在本地使用额外的
    META-INF/aop.xml
    ,并在-/excludes中指定。据我所知,AspectJ将在类路径上找到所有这些文件,并合并在那里找到的设置

  • 或者,您可以定义一个抽象切入点,并告诉用户将其具体化到项目中的
    aop.xml
    文件中


两种建议的解决方案都应该可行,但它们要求库的用户对AspectJ有基本的了解,或者至少对切入点语法有基本的了解。您可以这样做,并使用示例切入点或整个示例AOP配置文件相应地记录您的库,或者您必须在自己的切入点和/或-/excludes中更加具体。没有神奇的解决方案,AspectJ weaver无法猜测您想要编织什么和不想要编织什么。

我以为有语法代表源代码,但可能没有。因此,我将使用编译后编织或编译时编织来只编织源代码。谢谢你的帮助。实际上我不明白你刚才说的话。无论如何,如果你觉得我能够回答你的问题(即使你可能不喜欢答案的内容),那么请接受答案以结束问题。非常感谢。对不起,这是我第一次和我的朋友谷歌翻译一起使用Stackoverflow。我接受了答案。
pointcut traceMethods() : (execution(* *(..)) && !cflow(within(Interceptor)) && !within(*Test) && !within(Test*) && !within(*Tests) && !within(*TestCase));
before(): traceMethods(){
    Method method = ((MethodSignature) thisJoinPointStaticPart.getSignature()).getMethod();
    logDebug(method, LogPattern.METHOD_START);
}
after(): traceMethods(){
    Method method = ((MethodSignature) thisJoinPointStaticPart.getSignature()).getMethod();
    logDebug(method, LogPattern.METHOD_FINISH);
}`