0

「アプリケーション ログ メッセージ」をアペンダーに記録し、「セキュリティ ログ メッセージ」を別のアペンダーに記録する必要があるアプリケーションがあります (セキュリティ ログ メッセージはアプリケーション ログに表示されません)。次のようにロガーを設定することを考えていました。

Logger appLogger = Logger.getLogger("app." + myClassName);
Logger securityLogger = Logger.getLogger("security." + myClassName);

そして、私のlog4j構成を次のように設定します:

log4j.logger.app = DEBUG, applicationLogAppender
log4j.additivity.app = false 

log4j.logger.security = DEBUG, securityLogAppender
log4j.additivity.security = false 

これを行うためにlog4jを構成する最良の方法は何ですか? 私のソリューションは機能し、パッケージ/クラス名の前に「アプリ」を付けることを忘れない限り、開発者は特定のパッケージ/クラスのログを有効または無効にすることができると思います。または「セキュリティ」ですが、これを行うより良い方法があるかどうか疑問に思っていました.

注: このソリューションは、log4j および log4cxx で機能する必要があります。

4

1 に答える 1

0

2 年前、私はまったく同じタスクを与えられ、まさにこれを提案しました。ロガーのプレフィックスだけが「admin」と「debug」と呼ばれていました。あなた/私の提案は、ルートロガーのすぐ下に、2つの独立したトップレベルロガーを作成します。

log4j/cxx では、組み込みのルート ロガーを構成しないことは許可されていないと思います。命名ポリシーに従わないロガーからのスラッシュのログ記録をブロックするには、ログ レベルを「オフ」に設定します。

于 2011-09-09T20:30:22.083 に答える