我試圖配置Java Logging API的FileHandler以將我的服務器記錄到我主目錄中文件夾內的文件,但我不想創建這些目錄在它運行的每臺機器上。配置Java FileHandler日誌記錄以創建目錄(如果它們不存在)
例如在logging.properties文件我註明:
java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=%h/app-logs/MyApplication/MyApplication_%u-%g.log
這將讓我收我的主目錄(%H)日誌MyApplication的,並會使用%u旋轉他們(和%g個變量)。
的Log4j支持這個時候我在我的log4j.properties註明:
log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log
它看起來像有反對的日誌文件處理器中的錯誤: Bug 6244047: impossible to specify driectorys to logging FileHandler unless they exist
聽起來好像他們不打算修復它或暴露任何屬性以解決問題(除了讓應用程序解析logging.properties或硬編碼所需路徑):
它看起來像 java.util.logging.FileHandler不會 期望指定的目錄 可能不存在。通常情況下,它必須 無論如何檢查這個條件。此外,它還需要檢查寫入 權限的目錄。另一個問題 是如果其中一個檢查 沒有通過該怎麼辦。
如果 用戶具有適當的權限,則一種可能性是在路徑中創建 缺少的目錄。另一個 是拋出一個IOException和一個 明確的消息有什麼不對。後面的方法看起來更加一致。
如果我在log4j框架內但是我使用Java Logging框架,並且沒有攔截FileHandler創建調用的鉤子(除了首次訪問Logger時捕獲異常,例如記錄器.info(「test」)。 – Dougnukem 2009-08-12 05:24:31
我的意思是你可以編寫自己的appender。 – 2009-08-12 05:50:26
用戶沒有詢問Log4J。 – 2017-08-09 12:26:32