使用AspectJ记录没有Spring(Using AspectJ logging without

2019-06-27 00:52发布

我刚工作的一个旧的应用程序具有日志差或没有记录。 它没有实现Spring框架。
是否有可能实现AspectJ的日志记录功能没有春天?
如果是,请建议我一些很好的教程。

Answer 1:

试试这个链接,表示将使用负载时间编织的一个简单的应用程序,而无需使用弹簧http://ganeshghag.blogspot.in/2012/10/demystifying-aop-getting-started-with.html

一切将需要的是AspectJ运行和韦弗罐,并含有适当配置一个META-INF \ aop.xml文件的文件。

也请参阅链接,详细了解使用AspectJ LTW无弹簧http://www.eclipse.org/aspectj/doc/next/devguide/ltw.html



Answer 2:

您可以使用AspectJ的Spring没有(或log4j的)记录在任何AspectJ的消息支持joinpoints,

例如,

public aspect ListAllMethodExecution {
    private int callDepth; 

    private pointcut executionJoinPoints(): !within(ListAllMethodExecution) && execution (* *.*(..));

    before(): executionJoinPoints(){
        print("Before call " + thisJoinPoint);
        callDepth++;
    }

    after(): executionJoinPoints(){
        callDepth--;
        print("After call " + thisJoinPoint);
    }

    private void print(String s){
        for(int i=0; i<callDepth; i++)
            System.out.print("    ");
        System.out.println(s);
    }
}

您可以修改切入点表达式从特定事件或其他静电joinpoints,你可能有兴趣在一个特定的软件包进行登录。另外,你要重定向日志,你可以修改打印方法。

您可以使用加载时或编译时织入衣服给你。 希望这可以帮助。



Answer 3:

尝试加载时间与春天织 。

装载时织入(LTW)指的是编织的AspectJ到应用程序的类文件,因为它们被加载到Java虚拟机(JVM)的过程。

这意味着,你可以到类和consecuence添加记录方面Spring IoC容器之外的对象。



Answer 4:

也许这个开放源代码可以帮助你。 https://code.google.com/p/perfspy/ 。 这是一个运行时的日志记录,性能监控和检查代码的工具。 它采用ApsectJ在运行时在你的应用程序代码来编织,并记录每一个方法和它的输入参数和值的执行时间。 它有一个用户界面的应用程序,在其中您可以查看方法调用,并且它们的输入和返回值的树木。 有了它,你可以发现性能瓶颈,并理解复杂的代码流。



文章来源: Using AspectJ logging without Spring