1

SpringWebアプリを持っています。ロギング動作を変更して、セッションスコープのBeanに格納されているログインユーザーの名前を常にログ行に追加したいと思います。log4jを使用しています。ロギングしているがSpring管理されていないクラスがたくさんあります。一部のAOPを使用していますが、それはすべてSpring AOPであり、AspectJではないため、log4jの動作をグローバルに変更することはできません(そして、愚かなロギングの改善のためだけにAspectJを導入するのは良い考えとは思えません)。

私はこれを行うための正気な(または容認できる非常識な)方法を考えることはできません。

4

1 に答える 1

1

サーブレットでは、log4jのネストされた診断コンテキストを使用して次のようにすることができます。

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

Springディスパッチャーサーブレットを使用している場合は、ディスパッチャーサーブレットを独自のサーブレットでラップし、すべての呼び出しをディスパッチャーサーブレットに委任して、そこにNDCのものを追加できます。

于 2012-11-27T15:13:48.903 に答える