使用slf4j进行日志记录时的spring aspectj切入点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用slf4j进行日志记录时的spring aspectj切入点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1220字,纯文字阅读大概需要2分钟。
内容图文
我正在使用spring 3.0.6.我的应用程序有很多添加日志的地方(slf4j).假设我需要在每个严重错误上添加一些函数 – 我会更好地捕获每次调用错误级别的日志记录,并且可以在它之后执行工作 – 使用异常消息发送邮件到支持,或者像那样smth – 而不是手动添加代码应用程序中的所有位置.
我创建了以下课程:
@Aspect
public class LoggingWrapper {
@Pointcut("execution (* org.slf4j.Logger.error(..))")
public void logError() {
}
@AfterReturning("logError()")
public void afterError() {
//System.out.println("LOGERROR ASPECT AFTER");
//send email...
}
}
在春季配置:
<aop:aspectj-autoproxy />
<bean id="loggingWrapper" class="com.app.services.LoggingWrapper"/>
Aspect在我的课程中运作良好,但对于org.slf4j.Logger – 什么都没发生
解决方法:
@ crudo6,这对使用代理的Spring @AspectJ支持不起作用 – 原因是Spring处理@AspectJ注释的方式是创建代理,例如.如果您为@PointCut提供@Around建议(“执行(对于您的类)”),那么Spring将为Spring Context中的所有bean创建代理,其类型与切入点中的类匹配.
现在,由于slf4j类不是Spring上下文的一部分,因此不会为它们创建代理,并且您的方面将不会生效.
为了让它们工作,您可以尝试加载时间编织或编译时间编织并使用’@Pointcut(“call(* org.slf4j.Logger.error(…))”)’而不是执行,这样任何调用SLF4J可以被你的建议拦截. @Pointcut的执行需要编织slf4j库,这可能是不可能的.
内容总结
以上是互联网集市为您收集整理的使用slf4j进行日志记录时的spring aspectj切入点全部内容,希望文章能够帮你解决使用slf4j进行日志记录时的spring aspectj切入点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。