10

我刚刚处理了一个日志很差或没有日志的旧应用程序。它没有实现 Spring 框架。
是否可以在没有 Spring 的情况下实现 AspectJ 日志记录功能?
如果是,请向我推荐一些好的教程。

4

4 回答 4

10

试试这个链接以获得一个简单的应用程序,显示使用加载时间编织而不使用 Spring http://ganeshghag.blogspot.in/2012/10/demystifying-aop-getting-started-with.html

所需要的只是 aspectj 运行时和 weaver jar,以及包含正确配置的 META-INF\aop.xml 文件。

另请参阅链接以了解有关在没有弹簧的情况下使用 aspectj ltw 的详细信息 http://www.eclipse.org/aspectj/doc/next/devguide/ltw.html

于 2012-10-16T11:01:26.577 回答
4

您可以在没有 Spring(或 log4j)的情况下使用 aspectj 在任何 aspectj 支持的连接点处记录消息,

例如,

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);
    }
}

您可以修改切入点表达式以从特定包中记录您可能感兴趣的特定事件或其他静态连接点。您还可以根据需要修改打印方法来重定向日志。

您可以使用适合您的加载时间或编译时间编织。希望这可以帮助。

于 2012-08-14T06:46:55.963 回答
0

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

于 2013-08-19T07:29:32.280 回答
0

试试https://devkonline.com/tutorials/content/aspectj-java。它有在java中使用aspectj的逐步解释

于 2020-04-15T01:42:43.663 回答