9

アプリケーションログと監査ログの2種類のログを書き込む必要があるアプリケーションがあります。アプリケーションログはデバッグ目的で使用されますが、監査ログは実行された操作を記録するために使用されます。両方のログは異なるファイルにあり、各ファイルには前述のログのみが含まれている必要があります(つまり、監査ログファイルにはアプリケーションログを含めることができず、その逆も同様です)。

log4jを使用してこれをどのように実装できますか?
これを実装する1つの方法は、log4jでカスタムログレベルを定義することです。他の/より良い方法はありますか?

4

5 に答える 5

4

同じユースケースがあります。log4j.xmlでは、2つの異なるロガーとそれぞれにアペンダーを定義できます。したがって、例:

<logger name="LOGGER_1" additivity="false">
    <appender-ref ref="LOGGER_FILE_1"/>
</logger>

<appender name="LOGGER_FILE_1" class="org.jboss.logging.appender.RollingFileAppender">
   <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
   <param name="File" value="${jboss.server.log.dir}/loggerFile1.log"/>
   <param name="Append" value="true"/>
   <param name="MaxFileSize" value="20MB"/>
      <param name="MaxBackupIndex" value="5"/>

      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
</appender>

Javaコードでは、「Logger.getLogger( "LOGGER_1")」を使用してロガーを作成できます。これにより、ログ出力が定義されたファイルに書き込まれます。

于 2012-09-25T08:55:05.640 に答える
3

新しいレベルは必要ないと思います。むしろ、特定のロガー(またはのセットLoggers)が必要です。

通常、これらはクラス/パッケージ名でインスタンス化します。ただし、監査の目的Loggerで、「Audit」(または同様の名前)という名前の新しいインスタンスを作成し、標準のメカニズムを使用して適切に構成することができます。

于 2012-09-25T08:43:43.797 に答える
2

Log4j 2.0は、その主な目的の1つとして監査ログをサポートして作成されました。推奨される使用パターンは、Log4j(またはSLF4J)のEventLoggerを使用してから、FlumeAppenderを使用することです。これにより、ターゲットログリポジトリへの配信が保証されます。詳細については、 http ://logging.apache.org/log4j/2.x/manual/eventlogging.htmlおよびhttp://logging.apache.org/log4j/2.x/manual/appenders.html#FlumeAppenderを参照してください。他にご不明な点がございましたら、ApacheLog4jメーリングリストでお気軽にお問い合わせください。

于 2012-09-30T03:12:53.360 に答える
0

カスタムログレベルはオプションですが、必要かどうかはわかりません。

2つのアペンダーを定義できます。1つはロギング用で、もう1つは監査ファイルに書き込む監査用です。次に、監査アペンダーに接続されたロガーを作成し、それを使用して監査操作をレポートし、他のすべてのレポートは通常使用する通常のロガーを使用して保持できます。

于 2012-09-25T08:47:08.333 に答える
0

Log4Jのアペンダーはフィルターをサポートします。2つのファイルのメッセージを分離するには、LevelMatchFilterhttp : //logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/LevelMatchFilter.htmlを使用できます。

したがって、基本的には、2つの異なるファイルに対して2つのアペンダーを定義し、それぞれに適切なフィルターを設定します。

于 2012-09-25T08:49:34.390 に答える