亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

FileHandler 在原始日志被鎖定時生成額外的日志文件

FileHandler 在原始日志被鎖定時生成額外的日志文件

青春有我 2023-06-21 15:08:44
我需要為 websphere 應用程序服務器 9 上安裝和運行的每個應用程序生成一個日志文件。我使用 JUL 來生成日志文件。我的解決方案是創建一個特定的類,它繼承自 FileHandler 并通過配置文件設置日志屬性。這是我的代碼://Read config fileLogManager.getLogManager().readConfiguration(LoggerJUL.class.getResourceAsStream("/Logger.properties"));//Add handler to loggerLogger.getLogger(clazz)).addHandler(new PersonalFileHandler());PersonalFileHandler 擴展了 FileHandler,并且屬性由運行時 FileHandler 類上的 configure 方法設置。通過這種方式,我可以通過在 Websphere 上運行的應用程序創建一個日志文件,而不會覆蓋服務器日志的目標。雖然我實現了部分目標,但如果原始日志文件被鎖定,則會生成額外的文件,如下所示:testLogs.log.0,testLogs.log.1,testLogs.log.0.1等。我讀了很多建議和解決方案,但我無法阻止這個問題。有什么建議 ?handlers = com.mucam.xxxx.PersonalFileHandler# Set the default formatter to be the simple formattercom.mucam.xxxx.PersonalFileHandler.formatter = java.util.logging.SimpleFormatter# Write the log files to some file patterncom.mucam.xxxx.PersonalFileHandler.pattern = C:/Users/pmendez/Documents/Log/testLogs.log# Limit log file size to 5 Kbcom.mucam.xxxx.PersonalFileHandler.limit = 5000# Keep 10 log filescom.mucam.xxxx.PersonalFileHandler.count = 10#Customize the SimpleFormatter output format java.util.logging.SimpleFormatter.format = %d{ISO8601} [%t] %-5p %c %x - %m%n#Append to existing filecom.mucam.xxxx.PersonalFileHandler.append = true
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

雖然我實現了部分目標,但如果原始日志文件被鎖定,則會生成額外的文件,如下所示:testLogs.log.0,testLogs.log.1,testLogs.log.0.1等。我讀了很多建議和解決方案,但我無法阻止這個問題。有什么建議 ?

由于您的計數設置為 10,因此您需要指定%g記錄生成的模式。

com.mucam.xxxx.PersonalFileHandler.pattern?=?C:/Users/pmendez/Documents/Log/testLogs%g.log

該模式是絕對路徑,因此如果您創建多個文件處理程序,它將通過在末尾附加唯一編號來解決沖突。這是由%u模式指定的。因此,如果您想移動整數在文件名中的位置,您可以%u在模式中指定標記。

這也意味著您正在創建自定義文件處理程序的多個實例并且它們沒有被關閉。如果你想控制文件的數量,你要么需要控制你創建的 PersonalFileHandler 的數量,要么共享對單例 PersonalFileHandler 的引用。否則,您需要確保,如果顯式創建 PersonalFileHandler,則在創建第二個新的 PersonalFileHandler 之前顯式關閉該 PersonalFileHandler。

記錄器會受到垃圾收集的影響。該行:

Logger.getLogger(clazz).addHandler(new?PersonalFileHandler());

除非其他地方的代碼已經將該記錄器固定在內存中,否則會受到垃圾收集的影響。這可能會導致日志文件被創建、鎖定和清空。


查看完整回答
反對 回復 2023-06-21
  • 1 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號