審覈日誌需要進入數據庫。因此,我有以下登錄到數據庫的log4j設置。此審計日誌包含重要信息,因此如果應用程序無法登錄到數據庫,則應該登錄到文件(僅失敗的數據)。即使這是一種罕見的情況,我必須將失敗的日誌消息存儲到文件中。如果log4j無法登錄到數據庫,如何登錄到文件?
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# Set JDBC URL
log4j.appender.DB.URL=url
# Set Database Driver
log4j.appender.DB.driver=oracle.jdbc.driver.OracleDriver
# Set database user name and password
log4j.appender.DB.user=pwd
log4j.appender.DB.password=user
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO audit_log(loglevel, logger, message) VALUES('%p', '%C{1}:%L','%m%n')
# Define the layout for db appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
我創建了另一個文件appender可以記錄這樣的場景,但我怎麼知道數據庫日誌記錄失敗?所有的日誌功能都是無效的(信息,錯誤,警告,致命),所以沒有回調知道數據庫日誌失敗。有沒有人遇到過這種情況,並找到解決方案或解決這個問題。或者這種情況下允許登錄到數據庫和文件的其他記錄機制。
log4j.appender.failedToLog=org.apache.log4j.RollingFileAppender
log4j.appender.failedToLog.File=./logs/failedToLog/failedToAuditLog.log
log4j.appender.failedToLog.MaxFileSize=5MB
log4j.appender.failedToLog.MaxBackupIndex=10
log4j.appender.failedToLog.layout=org.apache.log4j.PatternLayout
log4j.appender.failedToLog.layout.ConversionPattern=%-5p [%d{dd-MMM-yyyy HH:mm:ss.SSS z}] - [%C{1}:%L] - %m%n
log4j.category.failedAuditLogger=DEBUG, failedToLog
log4j.additivity.failedAuditLogger=false
謝謝你@承諾人,你的回答完全符合我的要求。我感謝您的幫助:-) – Aditya