JavaTM 2 Platform
Standard Ed. 6

java.util.logging
類別 LogManager

java.lang.Object
  繼承者 java.util.logging.LogManager

public class LogManager
extends Object

存在一個單一的全體 LogManager 物件,它可用於維護 Logger 和日誌服務的一組共享狀態。

此 LogManager 物件:

可以使用 LogManager.getLogManager() 獲取全體 LogManager 物件。LogManager 物件是在類別初始化過程中創建的,過後便不能更改。

在啟動時,使用 java.util.logging.manager 系統屬性定位 LogManager 類別。

預設情況下,LogManager 從 JRE 目錄的屬性檔案 "lib/logging.properties" 中讀取其初始配置。如果編輯該屬性檔案,則可更改此 JRE 的所有使用者的預設日誌配置。

另外,LogManager 使用兩個可選的允許更好地控制初始配置讀取的系統屬性:

這兩個屬性可以通過 Preferences API 來設置,既可作為 "java" 命令的命令行屬性定義,也可作為傳遞到 JNI_CreateJavaVM 的系統屬性定義。

如果設置了 "java.util.logging.config.class" 屬性,則會把屬性值當作類別名。給定的類別將會被載入,並會實例化一個物件,該物件的建構子負責讀取初始配置。(此物件可以使用其他系統屬性來控制自己的配置。)此備用配置類別可使用 readConfiguration(InputStream) 來定義 LogManager 中的屬性。

如果設置 "java.util.logging.config.class" 屬性,則會使用 "java.util.logging.config.file" 系統屬性來指定一個屬性檔案(以 java.util.Properties 格式)。從此檔案讀取初始日誌配置。

如果這兩個屬性都沒有定義,則如上所述,LogManager 將從 JRE 目錄的屬性檔案 "lib/logging.properties" 中讀取其初始配置。

Logger 和 Handler 的屬性名稱是以圓點分隔的 Logger 或 Handler 的名稱開頭。

全體日誌屬性可以包括:

注意,在 LogManager 配置期間載入的全部類別,其搜尋順序是先從系統類別路徑中搜尋,然後才從使用者類別中搜尋。這包括 LogManager 類別、任何 config 類別和任何 handler 類別。

Logger 是按其圓點分隔的名稱被組織到命名層次結構中的。因此,"a.b.c" 是 "a.b" 的子級,但 "a.b1" 和 a.b2" 屬於同一級。

假定所有以 ".level" 結尾的名稱的屬性為 Logger 定義日誌級別。因此,"foo.level" 就為名稱為 "foo" 的 logger 定義了日誌級別,進而為指定層次結構中它的所有子級也逐個定義了日誌級別。日誌級別是按其在屬性檔案中的定義順序應用的。因此,階層樹中子節點的級別設置應該遲於其父級設置。屬性名 ".level" 可用於設置階層樹的根級。

LogManager 物件上的所有方法都是多執行緒安全的。

從以下版本開始:
1.4

欄位摘要
static String LOGGING_MXBEAN_NAME
          LoggingMXBeanObjectName 的字元串表示形式。
 
建構子摘要
protected LogManager()
          受保護的建構子。
 
方法摘要
 boolean addLogger(Logger logger)
          添加指定的 logger。
 void addPropertyChangeListener(PropertyChangeListener l)
          添加重讀日誌屬性時調用的事件偵聽器。
 void checkAccess()
          檢查使用當前上下文來修改日誌配置是否受信任。
 Logger getLogger(String name)
          尋找指定 logger 的方法。
 Enumeration<String> getLoggerNames()
          獲取已知 logger 名稱的列舉。
static LoggingMXBean getLoggingMXBean()
          返回管理 logger 的 LoggingMXBean
static LogManager getLogManager()
          返回全體 LogManager 物件。
 String getProperty(String name)
          獲取日誌屬性的值。
 void readConfiguration()
          重新初始化日誌屬性並重新讀取日誌配置。
 void readConfiguration(InputStream ins)
          從給定串流重新初始化並重新讀取日誌配置,該配置為 java.util.Properties 格式。
 void removePropertyChangeListener(PropertyChangeListener l)
          移除屬性更改事件的事件偵聽器。
 void reset()
          重置日誌配置。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

LOGGING_MXBEAN_NAME

public static final String LOGGING_MXBEAN_NAME
LoggingMXBeanObjectName 的字元串表示形式。

從以下版本開始:
1.5
另請參見:
常數欄位值
建構子詳細資訊

LogManager

protected LogManager()
受保護的建構子。保護此建構子以便容器應用程序(如 J2EE 容器)可以子類別化物件。此建構子不是公共的,因為只有一個 LogManager 物件,其值是通過調用 Logmanager.getLogManager 來獲取的。

方法詳細資訊

getLogManager

public static LogManager getLogManager()
返回全體 LogManager 物件。


addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener l)
                               throws SecurityException
添加重讀日誌屬性時調用的事件偵聽器。添加同一個事件偵聽器的多個實例將在屬性事件偵聽器表中產生多個條目。

參數:
l - 事件偵聽器
拋出:
SecurityException - 如果存在安全管理器,且調用者不具有 LoggingPermission("control")。
NullPointerException - 如果 PropertyChangeListener 為 null。

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener l)
                                  throws SecurityException
移除屬性更改事件的事件偵聽器。如果通過多次調用 addPropertyChangeListener 在偵聽器表中添加同一個偵聽器實例,則需要調用相同數目的 removePropertyChangeListener 將該偵聽器的所有實例從偵聽器表中移除。

如果未找到給定的偵聽器,則預設返回。

參數:
l - 事件偵聽器(可以為 null)
拋出:
SecurityException - 如果存在安全管理器,且調用者不具有 LoggingPermission("control")。

addLogger

public boolean addLogger(Logger logger)
添加指定的 logger。如果已經註冊了具有相同名稱的 logger,則不執行任何操作而返回 false。

Logger 處理器方法調用此方法來註冊每個新創建的 Logger。

此應用程序應該保留其自身對 Logger 物件的參考,以避免自己被作為無用資訊收集。LogManager 僅可能保留弱參考。

參數:
logger - 新 logger。
返回:
如果成功註冊參數 logger,則返回 true;如果該名稱的 logger 已經存在,則返回 false。
拋出:
NullPointerException - 如果 logger 名稱為 null。

getLogger

public Logger getLogger(String name)
尋找指定 logger 的方法。

注意,由於不受信任的程式碼可能使用任意名稱創建 logger,不能依賴於此方法為安全性敏感的日誌尋找 Logger。

參數:
name - logger 的名稱
返回:
比對 logger;如果未找到,則返回 null

getLoggerNames

public Enumeration<String> getLoggerNames()
獲取已知 logger 名稱的列舉。

註:載入新類別時可能動態添加 Logger。此方法僅報告當前已註冊的 logger。

返回:
logger 名稱字元串的列舉

readConfiguration

public void readConfiguration()
                       throws IOException,
                              SecurityException
重新初始化日誌屬性並重新讀取日誌配置。

使用與啟動時相同的規則尋找配置屬性。因此,通常從啟動時使用過的檔案重新讀取日誌屬性。

如果目標 Logger 存在,則使用 Logger.setLevel() 來應用新配置檔案中的所有日誌級別定義。

讀取這些屬性後將觸發 PropertyChangeEvent。

拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。
IOException - 如果讀取配置時存在 IO 問題。

reset

public void reset()
           throws SecurityException
重置日誌配置。

對於所有指定的 logger,重置操作移除並關閉全部 Handler(除了根 logger 之外),並將級別設置為 null。根 logger 的級別設置為 Level.INFO。

拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

readConfiguration

public void readConfiguration(InputStream ins)
                       throws IOException,
                              SecurityException
從給定串流重新初始化並重新讀取日誌配置,該配置為 java.util.Properties 格式。讀取這些屬性後將觸發 PropertyChangeEvent。

如果目標 Logger 存在,則使用 Logger.setLevel() 來應用新配置檔案中的所有日誌級別定義。

參數:
ins - 從中讀取屬性的串流
拋出:
SecurityException - 如果存在安全管理器,且調用者不具有 LoggingPermission("control")。
IOException - 如果從串流讀取時存在問題。

getProperty

public String getProperty(String name)
獲取日誌屬性的值。如果未找到屬性,則此方法返回 null。

參數:
name - 屬性名
返回:
屬性值

checkAccess

public void checkAccess()
                 throws SecurityException
檢查使用當前上下文來修改日誌配置是否受信任。此操作需要 LoggingPermission("control")。

如果此檢查失敗,則拋出 SecurityException;否則,正常返回。

拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

getLoggingMXBean

public static LoggingMXBean getLoggingMXBean()
返回管理 logger 的 LoggingMXBeanLoggingMXBean 還可以從平臺的 MBeanServer 方法得到。

返回:
LoggingMXBean 物件。
從以下版本開始:
1.5
另請參見:
ManagementFactory

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only