簡體   English   中英

使用log4j編寫審計日志

[英]Writing audit logs using log4j

我有一個應用程序需要寫兩種不同類型的日志:應用程序日志和審計日志。 應用程序日志用於調試目的,而審計日志用於記錄執行的操作。 兩個日志都將位於不同的文件中,每個文件應僅包含上述日志(意味着審核日志文件不能包含應用程序日志,反之亦然)。

如何使用log4j實現這一點?
我知道實現這一點的一種方法是在log4j中定義自定義日志級別。 還有其他/更好的方法嗎?

我有相同的用例。 在log4j.xml中,您可以為每個記錄器定義兩個不同的記錄器和一個appender。 舉個例子:

<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“)”創建一個Logger,它將日志輸出寫入定義的文件。

我認為你不需要一個新的水平。 相反,您需要一個特定的Logger (或一組Loggers )。

通常使用類/包名稱實例化它們。 但是,出於審計目的,您可以簡單地實例化名為“Audit”(或類似)的新Logger ,然后使用標准機制進行適當配置。

創建Log4j 2.0是為了支持審計日志記錄,這是其主要目的之一。 推薦的使用模式是使用Log4j(或SLF4J)的EventLogger,然后使用FlumeAppender,它可以為您的目標日志存儲庫提供有保證的傳遞。 有關詳細信息,請參閱http://logging.apache.org/log4j/2.x/manual/eventlogging.htmlhttp://logging.apache.org/log4j/2.x/manual/appenders.html#FlumeAppender 如果您有其他問題,請隨時詢問Apache Log4j郵件列表。

自定義日志級別是一個選項,但我不確定您是否需要它。

您可以定義2個appender:一個用於記錄,另一個用於寫入審核文件的審核。 然后,您可以創建一個與審計appender連接的記錄器,並使用它來報告審計操作,同時使用您通常使用的常規記錄器保留所有其他報表。

Log4J中的appender支持過濾器。 要分離2個文件中的消息,可以使用LevelMatchFilter http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/LevelMatchFilter.html

所以基本上你為2個不同的文件定義了2個appender,每個文件都有適當的過濾器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM