在我的Web应用程序(基于Spring)中,我有简单的分层架构,如Service-> Manager-> Dao->数据库。为了记录目的,我想记录请求到服务,然后一次退出服务,以便调试问题。否则,日志包含来自不同线程的各种输出,这些输出彼此混合,这是不容易阅读的。是否可以使用log4j等现有的日志记录框架。
答案 0 :(得分:1)
任何日志记录框架都可以。您可以使用AOP围绕服务方法创建“日志记录”方面。这是一些example。
答案 1 :(得分:1)
您可以使用Spring AOP来实施此类日志。这是一个例子:
@Aspect
public class LoggingAspect {
private static final Logger LOG = LoggerFactory.getLogger(LoggingAspect.class);
@Pointcut("call(* com.yourcompany.*.*(..))")
public void serviceMethod() {
}
@Before("serviceMethod()")
public void logMethodCalls(final JoinPoint joinPoint) {
if (LOG.isDebugEnabled())
LOG.debug("Calling method {} with args {}",
joinPoint.getSignature(), joinPoint.getArgs());
}
}
只需将其连接为Spring Bean:
<bean class="com.somepackage.LoggingAspect" />
<aop:aspectj-autoproxy/>
应该记录在匹配的包中调用Spring bean的公共方法。