记录整个应用程序流程以便于阅读

时间:2011-06-28 13:41:47

标签: java spring logging

在我的Web应用程序(基于Spring)中,我有简单的分层架构,如Service-> Manager-> Dao->数据库。为了记录目的,我想记录请求到服务,然后一次退出服务,以便调试问题。否则,日志包含来自不同线程的各种输出,这些输出彼此混合,这是不容易阅读的。是否可以使用log4j等现有的日志记录框架。

2 个答案:

答案 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的公共方法。