3

これはおそらく非常にばかげた質問ですが、答えが見つからないようです。Context レベルで使用される Tomcat 用のカスタム Realm があります。失敗したログインと成功したログインをログに記録したいと思います。

ファイルを指定したり、既存のファイルへの参照を取得したりして、レルムの認証機能内から明示的なログ行を書き込む方法はありますか?

log4j ファイルと JUL ファイルをセットアップし、getLogger を呼び出して書き込みを試みましたが、うまくいきませんでした。また、内部ログ プロセスにアクセスできることを期待して、 getLogger("catalina") も試しました。そこからの助けはありますか?

4

2 に答える 2

0

containerLog を使用すると、非常に簡単であることがわかりました。

利点は、サーバーのロギング構成を活用することです。特に、JULI が使用されている Tomcat 7 では有効です (commons ロギングの改善として)。

私が気に入らなかった唯一のことは、API がコモンズ ロギングの API であり、たとえば slf4j の API ほどフレンドリーではないことです。ただし、log4j で slf4j を構成することもできます。その場合、レルムをインスタンス化するときに親クラス ローダーがそれらを参照できるように、Tomcat/lib に JAR ファイルを追加する必要があります。

もう 1 つ注意する必要があるのは、レルム コンストラクターに何も記録しないことです。カスタムの初期化 (カスタム ファイルのロード) を行う必要があり、いくつかの基本的なログを追加して、厄介な NullPointer で終了しました。containerLog はコンストラクターではなく、メソッド initInternal() で初期化されます。それをオーバーライドし、ロガーを初期化する super.initiInternal () を呼び出すようにしてください。

于 2013-07-31T13:52:39.297 に答える
0

Realm を拡張しorg.apache.catalina.realm.RealmBaseますか?

アクセスできる保護された属性org.apache.catalina.realm.RealmBase.containerLog(のインスタンスorg.apache.juli.logging.Log) があります。org.apache.catalina.realm.*これは、実装の多くでログインするためのアプローチのようです。

于 2013-01-22T22:26:47.490 に答える