使用spring会话bean进行日志记录

时间:2012-11-27 13:31:03

标签: spring logging log4j aop spring-aop

我有一个Spring网络应用程序。 我想将其日志记录行为更改为始终在日志行前面添加登录用户的名称,该用户名存储在会话范围的bean中。 我们正在使用log4j。 有很多类都是日志记录但不是Spring管理的。 虽然我们确实使用了一些AOP,但它都是Spring AOP,而不是AspectJ,所以我无法全局修改log4j行为(并且引入AspectJ只是为了进行愚蠢的日志记录改进并不是一个好主意)。

我想不出任何理智(甚至可接受的疯狂)方式。

1 个答案:

答案 0 :(得分:1)

在您的servlet中,您可以使用log4j的嵌套诊断上下文来执行:

NDC.push(getUsername());
try {
    ....
}
finally {
    NDC.pop();
}

如果您正在使用spring dispatcher servlet,您可以将调度程序servlet包装在您自己的servlet中,将所有调用委托给调度程序servlet并在那里添加NDC内容。