场景:我有一个应用程序,我们注意到一些不必要的日志记录,因此该服务器上的内存使用率上升到 90%,这根本不是我们所希望的,并且对产品支持感到担忧。罪魁祸首是一个类,其中我有一堆日志记录语句,例如 log.info,在 prod 环境中我无权访问此类,但我可以访问 spring config xml。我可以将一个方面应用于类/特别是停止执行 log.info 语句的方法吗?
问问题
710 次
1 回答
0
我同意您问题下方的评论:只需重新配置日志记录。
从技术上讲,使用 Spring AOP,您仅限于拦截对 Spring bean 方法的调用或执行。因此,除非您的日志记录调用未封装在 Spring bean 中,否则 Spring AOP 将没有用处。
但是,使用 AspectJ,您可以将 LTW(加载时编织)应用到您的日志库并阻止执行由特定控制流调用的日志记录方法。你也可以通过编织你的应用程序代码来做同样的事情,然后阻止从特定控制流中调用日志记录方法。
免责声明:虽然这在方面很容易实现,但我不知道您的生产管理员是否允许您在目标系统上使用 AspectJ。即使您将方面编译到您自己的生产代码中,至少您将需要应用程序的类路径中的 AspectJ 运行时 (aspectjrt.jar)。
于 2013-06-12T12:08:15.553 回答