2014-02-05 78 views
0

我編寫了一個CXF SOAP客戶端,並且希望爲每次運行創建編號的日誌文件。Java使用模式記錄到文件

我已經嘗試使用「logging.properties」文件配置FileHandler。我有這條線有:

handlers= java.util.logging.FileHandler 
.level= INFO 
java.util.logging.FileHandler.pattern = campaignStatusCXF%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 
# Limit the message that are printed on the console to WARNING and above. 
java.util.logging.ConsoleHandler.level = WARNING 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

不過,這並不只是單獨工作。我不得不在代碼中添加FileHandler:

System.setProperty(「java.util.logging.config.file」,「/logging.properties」); LOG = Logger.getLogger(BulkEmailDownloader.class.getName());

try { 
    FileHandler logFile; 
    logFile = new FileHandler("campaignStatus.log"); 
    logFile.setFormatter(new SimpleFormatter()); 
    LOG.addHandler(logFile); 
} catch (SecurityException e1) {    
} catch (IOException e2) {   
} 

這種方法的問題是 - 它只是簡單地重寫日誌。

我看了很多例子和答案,例如this,但找不到我要找的答案。

回答

0

問題是LogManager配置在執行代碼之前運行。這意味着您必須執行以下操作之一:

  1. 在啓動腳本中設置'java.util.logging.config.file'系統屬性。
  2. 在您的代碼中設置系統屬性後,致電LogManager.readConfiguration()
  3. 使用ClassLoader.getResourceAsStream(String)LogManager.readConfiguration(InputStream)加載您的屬性文件。

而且,您的示例代碼需要包含一個文件模式:

new FileHandler("campaignStatus%g.log"); 
相關問題