sfu*_*ger 10
异常方面可能如下所示:
@Aspect
public class ExceptionAspect {
private static final Logger log = LoggerFactory.getLogger(ExceptionAspect.class);
public Object handle(ProceedingJoinPoint pjp) throws Throwable {
try {
return pjp.proceed();
} catch (Throwable t) {
// so something with t: log, wrap, return default, ...
log.warn("invocation of " + pjp.getSignature().toLongString() + " failed", t);
// I hate logging and re-raising, but let's do it for the sake of this example
throw t;
}
}
}
Run Code Online (Sandbox Code Playgroud)
春天conf:
<!-- log exceptions for any method call to any object in a package called 'svc' -->
<bean class="org.example.aspects.ExceptionAspect" name="exceptionAspect" />
<aop:config>
<aop:aspect ref="exceptionAspect">
<aop:around method="handle" pointcut="execution(* org.example..svc..*.*(..))" />
</aop:aspect>
</aop:config>
Run Code Online (Sandbox Code Playgroud)
编辑:
如果你想让记录器代表被包装的bean登录,你当然可以这样做:
LoggerFactory.getLogger(pjp.getTarget().getClass()).warn("damn!");
Run Code Online (Sandbox Code Playgroud)
或者如果您优先使用此方法的声明类而不是实际(可能代理/自动生成的类型):
LoggerFactory.getLogger(pjp.getSignature().getDeclaringType()).warn("damn!");
Run Code Online (Sandbox Code Playgroud)
老实说,我无法估计每次调用LoggerFactory.getLogger(..)的性能影响.我认为它不应该太糟糕,因为异常是特殊的(即罕见的).
| 归档时间: |
|
| 查看次数: |
6006 次 |
| 最近记录: |