2014-10-05 70 views
0
  1. 在調用LogManager.readConfiguration(InputStream)後創建Logger時,我們是否必須創建FileHandler並將其添加到Logger中,或者Logger是否會使用下面的配置文件創建它自己的FileHandler?如何使用配置文件創建FileHandler?

  2. 當我在調用LogManager.readConfiguration(InputStream)後創建一個FileHandler時,它似乎沒有使用配置文件中的屬性(如下所示)。這是爲什麼?

  3. 有沒有辦法指出(在配置文件中)特定的FileHandler配置,特定的指定Logger將使用?防爆。如果我正在創建一個名爲「a.bb.ccc」的記錄器,並且我希望它使用具有一定限制和格式化程序的FileHandler,但是我希望默認的FileHandler使用其他限制和格式化程序,那麼我該怎麼做?

    handlers = java.util.logging.FileHandler 
    
    .level = ALL 
    
    # Default 
    java.util.logging.FileHandler.level = FINEST 
    java.util.logging.FileHandler.formatter = package1.package2.package3.SimpleFormatter 
    java.util.logging.FileHandler.limit = 10000 
    java.util.logging.FileHandler.count = 7 
    java.util.logging.FileHandler.append = true 
    
    # package1.package2.class1 
    package1.package2.class1.level = FINER 
    

回答

0
  1. 讀取配置創建的FileHandler。您不必添加一個。
  2. 「package1.package2.package3.SimpleFormatter」必須是公開的,可見的系統類加載器,具有公共的無參數的構造函數,也沒有例外逃脫爲了構造才能進行安裝它。
  3. 不支持使用屬性語法,但可以使用LogManager類級文檔中描述的config選項來代替。創建一個新的類'package.SimpleFileConfig',並讓默認的構造函數按照你想要的方式設置一切。然後你的logging.properties將包含一行:config=package.SimpleFileConfig
+0

1.根據你所說的,它會自動創建一個。是因爲「handlers = java.util.logging.FileHandler」? 2.它不起作用,因爲我沒有使用默認的格式化程序?爲什麼我不能使用我的自定義格式器? 3.我認爲屬性文件在運行時會讓事情更加靈活,但我想不是。 – dalawh 2014-10-06 22:20:52

+0

1.正確。 2.只要你的類可以從系統類加載器訪問,是公共的,並且具有公共的無參數構造函數,就可以工作。 – jmehrens 2014-10-07 13:36:53