1

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

我想不出任何理智(甚至可以接受的疯狂)方式来做到这一点。

4

1 回答 1

1

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

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

如果您使用的是 spring dispatcher servlet,您可以将 dispatcher servlet 包装在您自己的 servlet 中,将所有调用委托给 dispatcher servlet 并在那里添加 NDC-stuff。

于 2012-11-27T15:13:48.903 回答