JavaTM 2 Platform
Standard Ed. 6

java.util.logging
類別 Logger

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

public class Logger
extends Object

Logger 物件用來記錄特定系統或應用程序元件的日誌訊息。一般使用圓點分隔的層次名稱空間來命名 Logger。Logger 名稱可以是任意的字元串,但是它們一般應該基於被記錄元件的套件名或類別名,如 java.net 或 javax.swing。此外,可以創建“匿名”的 Logger,其名稱未存儲在 Logger 名稱空間中。

可通過調用某個 getLogger 處理器方法來獲得 Logger 物件。這些方法要麼創建一個新 Logger,要麼返回一個合適的現有 Logger。

日誌訊息被轉發到已註冊的 Handler 物件,該物件可以將訊息轉發到各種目的地,包括終端機、檔案、OS 日誌等等。

每個 Logger 都追蹤一個“父”Logger,也就是 Logger 名稱空間中與其最近的現有祖先。

每個 Logger 都有一個與其相關的 "Level"。這反映了此 logger 所關心的最低 Level。如果將 Logger 的級別設置為 null,那麼它的有效級別繼承自父 Logger,這可以通過其父 Logger 一直沿階層樹向上遞歸得到。

可以根據日誌配置檔案的屬性來配置日誌級別,在 LogManager 類別的描述中對此有所說明。但是也可以通過調用 Logger.setLevel 方法動態地改變它。如果日誌級別改變了,則此變化也會影響它的子 logger,因為任何級別為 null 的子 logger 的有效級別都繼承自它的父 Logger。

對於每次日誌記錄調用,Logger 最初都依照 logger 的有效日誌級別對請求級別(例如 SEVERE 或 FINE)進行簡單的檢查。如果請求級別低於日誌級別,則日誌記錄調用將立即返回。

通過此初始(簡單)測試後,Logger 將分派一個 LogRecord 來描述日誌記錄訊息。接著調用 Filter(如果存在)進行更詳細的檢查,以確定是否應該發佈該記錄。如果檢查通過,則將 LogRecord 發佈到其輸出 Handler。在預設情況下,logger 也將 LogRecord 沿階層樹遞推發佈到其父 Handler。

每個 Logger 都有一個與其關聯的 ResourceBundle 名稱。該指定的套件用於本地化日誌訊息。如果一個 Logger 沒有自己的 ResourceBundle 名稱,則它將通過其父 Logger 沿階層樹遞歸繼承到 ResourceBundle 名稱。

大多數 logger 輸出方法都帶有 "msg" 參數。此 msg 參數可以是一個原始值,也可以是一個本地化的鍵。在格式化期間,如果 logger 具有(或繼承)一個本地化 ResourceBundle,並且 ResourceBundle 套件含 msg 字元串的映射關係,那麼用本地化值替換 msg 字元串。否則使用原來的 msg 字元串。通常,格式器使用 java.text.MessageFormat 形式的格式來格式化參數,例如,格式字元串 "{0} {1}" 將兩個參數格式化為字元串。

將 ResourceBundle 名稱映射到 ResourceBundle 時,Logger 首先試圖使用該執行緒的 ContextClassLoader。如果 ContextClassLoader 為 null,則 Logger 將嘗試 SystemClassLoader。作為初始實作中的臨時過渡功能,如果 Logger 無法從 ContextClassLoader 或 SystemClassLoaderis 中找到一個 ResourceBundle,則 Logger 將會向上搜尋類別堆疊(stack)空間並連續調用 ClassLoader 來試圖找到 ResourceBundle(此調用堆疊(stack)空間搜尋是為了允許容器過渡到使用 ContextClassLoader,該功能可能在以後版本中取消)。

格式化(包括本地化)是輸出 Handler 的責任,它通常會調用格式器。

注意,格式化不必同步發生。它可以延遲,直到 LogRecord 被實際寫入到外部接收器。

日誌記錄方法劃分為 5 個主要類別別:

對於不帶顯式源名和方法名的方法,日誌記錄框架將盡可能確定日誌記錄方法中調用了哪個類別和方法。但是應認識到,這樣自動推斷的資訊可能只是近似的,甚至可能是完全錯誤的。這是因為允許虛擬機器在 JIT 編譯時可以進行廣泛的優化,並且可以完全移除堆疊(stack)空間幀,導致它無法可靠地找到調用的類別和方法。

Logger 上執行的所有方法都是多執行緒安全的。

子類別化資訊:注意,對於名稱空間中的任意點,LogManager 類別都可以提供自身的指定 Logger 實作。因此,Logger 的任何子類別(它們與新的 LogManager 類別一起實作的情況除外)要注意應該從 LogManager 類別獲得一個 Logger 實例,並應該將諸如 "isLoggable" 和 "log(LogRecord)" 這樣的操作委託給該實例。注意,為了截取所有的日誌記錄輸出,子類別只需要覆寫 log(LogRecord) 方法。所有其他日誌記錄方法作為在此 log(LogRecord) 方法上的調用而實作。

從以下版本開始:
1.4

欄位摘要
static Logger global
          已過時。 此欄位的初始化會容易出現死鎖。必須由 Logger 類別初始化來初始化欄位,這可能會導致 LogManager 類別初始化的死鎖。在這種情況下,兩個類別初始化都要等待對方完成。從 JDK version 1.6 開始,獲取全體 logger 物件的首選方法是通過調用 Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
static String GLOBAL_LOGGER_NAME
          GLOBAL_LOGGER_NAME 是全體 logger 的一個名稱。
 
建構子摘要
protected Logger(String name, String resourceBundleName)
          受保護的方法,它用於為一個指定子系統的建構 logger。
 
方法摘要
 void addHandler(Handler handler)
          添加一個日誌 Handler 以接收日誌記錄訊息。
 void config(String msg)
          記錄一條 CONFIG 訊息。
 void entering(String sourceClass, String sourceMethod)
          記錄一個方法條目。
 void entering(String sourceClass, String sourceMethod, Object param1)
          記錄一個方法條目,帶有一個參數。
 void entering(String sourceClass, String sourceMethod, Object[] params)
          記錄一個方法條目,帶有一組參數。
 void exiting(String sourceClass, String sourceMethod)
          記錄一個方法返回。
 void exiting(String sourceClass, String sourceMethod, Object result)
          記錄一個方法返回,帶有結果物件。
 void fine(String msg)
          記錄一條 FINE 訊息。
 void finer(String msg)
          記錄一條 FINER 訊息。
 void finest(String msg)
          記錄一條 FINEST 訊息。
static Logger getAnonymousLogger()
          創建一個匿名的 Logger。
static Logger getAnonymousLogger(String resourceBundleName)
          創建一個匿名的 Logger。
 Filter getFilter()
          獲取此 Logger 的當前過濾器。
 Handler[] getHandlers()
          獲得與此 logger 相關的 Handler。
 Level getLevel()
          獲取已為此 Logger 指定的日誌級別(Level)。
static Logger getLogger(String name)
          為指定子系統尋找或創建一個 logger。
static Logger getLogger(String name, String resourceBundleName)
          為指定子系統尋找或創建一個 logger。
 String getName()
          獲取此 logger 的名稱。
 Logger getParent()
          返回此 Logger 的父 logger。
 ResourceBundle getResourceBundle()
          獲取此 logger 在當前預設語言環境的本地化資源套件。
 String getResourceBundleName()
          獲取此 logger 的本地化資源套件名稱。
 boolean getUseParentHandlers()
          獲知此 logger 是否將其輸出發送到它的父 logger。
 void info(String msg)
          記錄一條 INFO 訊息。
 boolean isLoggable(Level level)
          檢查給定級別的訊息實際上是否由此 logger 記錄。
 void log(Level level, String msg)
          記錄一條不帶參數的訊息。
 void log(Level level, String msg, Object param1)
          記錄帶有一個物件參數的訊息。
 void log(Level level, String msg, Object[] params)
          記錄帶有一組物件參數的訊息。
 void log(Level level, String msg, Throwable thrown)
          記錄帶有相關的可拋出資訊的訊息。
 void log(LogRecord record)
          記錄一條 LogRecord。
 void logp(Level level, String sourceClass, String sourceMethod, String msg)
          記錄一條訊息,具有指定的源類別和方法,不帶參數。
 void logp(Level level, String sourceClass, String sourceMethod, String msg, Object param1)
          記錄一條訊息,具有指定的源類別和方法,帶有單個日誌訊息的物件參數。
 void logp(Level level, String sourceClass, String sourceMethod, String msg, Object[] params)
          記錄一條訊息,具有指定的源類別和方法,帶有一組物件參數。
 void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown)
          記錄一條訊息,具有指定源類別和方法,帶有相關的可拋出資訊。
 void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg)
          記錄一條訊息,具有指定的源類別、方法和資源包名,不帶參數。
 void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object param1)
          記錄一條訊息,具有指定的源類別、方法和資源包名,帶有單個日誌訊息的物件參數。
 void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object[] params)
          記錄一條訊息,具有指定的源類別、方法和資源包名,帶有一組物件參數。
 void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Throwable thrown)
          記錄一條訊息,具有指定的源類別、方法和資源包名,帶有相關的可拋出物件。
 void removeHandler(Handler handler)
          移除一個日誌 Handler。
 void setFilter(Filter newFilter)
          設置過濾器以控制此 Logger 的輸出。
 void setLevel(Level newLevel)
          設置日誌級別,指定此 logger 記錄的訊息級別。
 void setParent(Logger parent)
          設置此 Logger 的父 Logger。
 void setUseParentHandlers(boolean useParentHandlers)
          指定此 logger 是否應該將其輸出發送到它的父 Logger。
 void severe(String msg)
          記錄一條 SEVERE 訊息。
 void throwing(String sourceClass, String sourceMethod, Throwable thrown)
          正拋出異常的記錄。
 void warning(String msg)
          記錄一條 WARNING 訊息。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

GLOBAL_LOGGER_NAME

public static final String GLOBAL_LOGGER_NAME
GLOBAL_LOGGER_NAME 是全體 logger 的一個名稱。此名稱是向偶爾使用 Logging 套件的開發人員提供的一種便捷方法。認真使用 logging 套件(例如在產品中)的開發人員應創建並使用其自己的 Logger 物件(帶合適的名稱),這樣才能在適合於每個 Logger 粒度的級別上控制日誌記錄。

獲取全體 logger 的首選方法是通過調用 Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)

從以下版本開始:
1.6
另請參見:
常數欄位值

global

@Deprecated
public static final Logger global
已過時。 此欄位的初始化會容易出現死鎖。必須由 Logger 類別初始化來初始化欄位,這可能會導致 LogManager 類別初始化的死鎖。在這種情況下,兩個類別初始化都要等待對方完成。從 JDK version 1.6 開始,獲取全體 logger 物件的首選方法是通過調用 Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
“全體”Logger 物件是向偶爾使用 Logging 套件的開發人員提供的一種便捷方法。對於經常使用 logging 套件(如在產品中)的開發人員應創建和使用其自己的 Logger 物件(帶合適的名稱),這樣才能在適合於每個 Logger 粒度的級別上控制日誌記錄。

建構子詳細資訊

Logger

protected Logger(String name,
                 String resourceBundleName)
受保護的方法,它用於為一個指定子系統的建構 logger。

該 logger 初始配置的 Level 為 null,並且 useParentHandler 為 true。

參數:
name - logger 的名稱。這應該是一個圓點分隔的名稱,並且通常應該基於子系統的套件名或類別名(如 java.net 或 javax.swing)。對於匿名 Logger 來說,名稱可以為 null。
resourceBundleName - 用來本地化此 logger 訊息的 ResourceBundle 的名稱。如果訊息不需要本地化,則名稱可能為 null。
拋出:
MissingResourceException - 如果 ResourceBundleName 不為 null,並且無法找到相應的資源。
方法詳細資訊

getLogger

public static Logger getLogger(String name)
為指定子系統尋找或創建一個 logger。如果已經創建了具有給定名稱的 logger,則返回該 logger。否則創建一個新的 logger。

如果創建了新的 logger,則根據 LogManager 的配置來配置其日誌級別,並將日誌輸出發送到其父處理程序。日誌配置註冊在 LogManager 全體名稱空間內。

參數:
name - logger 的名稱。這應該是一個圓點分隔的名稱,並且通常應該基於子系統的套件名或類別名(如 java.net 或 javax.swing)
返回:
適合的 Logger
拋出:
NullPointerException - 如果 name 為 null。

getLogger

public static Logger getLogger(String name,
                               String resourceBundleName)
為指定子系統尋找或創建一個 logger。如果已經創建了具有給定名稱的 logger,則返回該 logger。否則創建一個新的 logger。

如果創建了新的 logger,則根據 LogManager 來配置其日誌級別,並將日誌輸出發送到其父處理程序。日誌配置註冊在 LogManager 全體名稱空間內。

如果指定的 Logger 已經存在,並且沒有本地化資源包,則使用給定的資源套件名稱。如果給定的 Logger 已經存在,並有不同的資源套件名稱,則拋出 IllegalArgumentException。

參數:
name - logger 的名稱。這應該是一個圓點分隔的名稱,並且通常應該基於子系統的套件名或類別名(如 java.net 或 javax.swing)。
resourceBundleName - 用來本地化此 logger 訊息的 ResourceBundle 的名稱。如果訊息不需要本地化,則名稱可以為 null
返回:
合適的 Logger。
拋出:
MissingResourceException - 如果無法找到指定的 ResourceBundle。
IllegalArgumentException - 如果 Logger 已經存在,並使用了不同的資源套件名稱。
NullPointerException - 如果 name 為 null。

getAnonymousLogger

public static Logger getAnonymousLogger()
創建一個匿名的 Logger。新創建的 Logger 不是註冊在 LogManager 名稱空間內。不必對是否更新到 logger 進行存取檢查。

此處理器方法主要適合從 applet 來使用。因為得到的 Logger 是匿名的,所以它可通過創建類別而保持為私有的。這就不需要進行常規安全檢查,從而允許不受信任的 applet 程式碼可更新 Logger 的控制狀態。例如,applet 可以在匿名的 Logger 上執行 setLevel 或 addHandler 操作。

即使新的 logger 是匿名的,也要配置它將根 logger ("") 作為其父 logger。這意味著在預設情況下此 logger 從根 logger 繼承有效級別和處理程序。

返回:
新創建的私有 Logger。

getAnonymousLogger

public static Logger getAnonymousLogger(String resourceBundleName)
創建一個匿名的 Logger。新創建的 Logger 不是註冊在 LogManager 名稱空間內。不會對 logger 是否更新進行存取檢查。

此處理器方法主要適合從 applet 使用。因為得到的 Logger 是匿名的,所以它可通過創建類別而保持為私有的。這就不需要進行常規安全檢查,從而允許不受信任的 applet 程式碼可更新 Logger 的控制狀態。例如,applet 可以在匿名的 Logger 上執行 setLevel 或 addHandler 操作。

即使新的 logger 是匿名的,也要把它配置為將根 logger ("") 作為其父 logger。這意味著在預設情況下此 logger 從根 logger 繼承有效級別和處理程序。

參數:
resourceBundleName - 用來本地化此 logger 訊息的 ResourceBundle 的名稱。如果訊息不需要本地化,則名稱可以為 null。
返回:
新創建的私有 Logger。
拋出:
MissingResourceException - 如果無法找到指定的 ResourceBundle。

getResourceBundle

public ResourceBundle getResourceBundle()
獲取此 logger 在當前預設語言環境的本地化資源套件。注意,如果結果為 null,則 Logger 將使用從其父 Logger 繼承的資源套件。

返回:
本地化包(可能為 null)

getResourceBundleName

public String getResourceBundleName()
獲取此 logger 的本地化資源套件名稱。注意,如果結果為 null,則 Logger 將使用從其父 Logger 繼承的資源套件名稱。

返回:
本地化套件名稱(可能為 null)

setFilter

public void setFilter(Filter newFilter)
               throws SecurityException
設置過濾器以控制此 Logger 的輸出。

通過初始的“級別”檢查之後,Logger 將調用此 Filter 以檢查是否確實應該發佈某個日誌記錄。

參數:
newFilter - filter 物件(可能為 null)
拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

getFilter

public Filter getFilter()
獲取此 Logger 的當前過濾器。

返回:
過濾器物件(可能為 null)

log

public void log(LogRecord record)
記錄一條 LogRecord。

此類別中的其他所有日誌記錄方法都調用此方法以實際執行所有日誌記錄操作。子類別可以覆寫此單個方法,從而捕獲所有的日誌活動。

參數:
record - 要發佈的 LogRecord

log

public void log(Level level,
                String msg)
記錄一條不帶參數的訊息。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
msg - 字元串訊息(或訊息類別別中的鍵)

log

public void log(Level level,
                String msg,
                Object param1)
記錄帶有一個物件參數的訊息。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
msg - 字元串訊息(或訊息類別別中的鍵)
param1 - 訊息的參數

log

public void log(Level level,
                String msg,
                Object[] params)
記錄帶有一組物件參數的訊息。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
msg - 字元串訊息(或訊息類別別中的鍵)
params - 訊息的一組參數

log

public void log(Level level,
                String msg,
                Throwable thrown)
記錄帶有相關的可拋出資訊的訊息。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的參數存儲在 LogRecord 中,而 LogRecord 則被轉發到所有已註冊的輸出處理程序。

注意,拋出的參數存儲在 LogRecord 拋出屬性中,而不是存儲在 LogRecord 參數屬性中。因此特別通過輸出 Formatter 來處理參數,而不是將其視為 LogRecord 訊息屬性的格式化參數。

參數:
level - 某個訊息級別標識符,例如 SEVERE
msg - 字元串訊息(或訊息類別別中的鍵)
thrown - 與日誌訊息相關的可拋出物件。

logp

public void logp(Level level,
                 String sourceClass,
                 String sourceMethod,
                 String msg)
記錄一條訊息,具有指定的源類別和方法,不帶參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
msg - 字元串訊息(或訊息類別別中的鍵)

logp

public void logp(Level level,
                 String sourceClass,
                 String sourceMethod,
                 String msg,
                 Object param1)
記錄一條訊息,具有指定的源類別和方法,帶有單個日誌訊息的物件參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
msg - 字元串訊息(或訊息類別別中的鍵)
param1 - 日誌訊息的參數。

logp

public void logp(Level level,
                 String sourceClass,
                 String sourceMethod,
                 String msg,
                 Object[] params)
記錄一條訊息,具有指定的源類別和方法,帶有一組物件參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
msg - 字元串訊息(或訊息類別別中的鍵)
params - 訊息的一組參數

logp

public void logp(Level level,
                 String sourceClass,
                 String sourceMethod,
                 String msg,
                 Throwable thrown)
記錄一條訊息,具有指定源類別和方法,帶有相關的可拋出資訊。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的參數存儲在 LogRecord 中,而 LogRecord 則被轉發到所有已註冊的輸出處理程序。

注意,拋出的參數存儲在 LogRecord 拋出屬性中,而不是存儲在 LogRecord 參數屬性中。因此特別通過輸出 Formatter 來處理參數,而不是將其視為 LogRecord 訊息屬性的格式化參數。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
msg - 字元串訊息(或訊息類別別中的鍵)
thrown - 與日誌訊息相關的可拋出物件。

logrb

public void logrb(Level level,
                  String sourceClass,
                  String sourceMethod,
                  String bundleName,
                  String msg)
記錄一條訊息,具有指定的源類別、方法和資源包名,不帶參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

使用指定的資源包本地化 msg 字元串。如果資源包名為 null,或者一個空 String 或無效,那麼不本地化 msg 字元串。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
bundleName - 本地化 msg 的資源包名(可能為 null)
msg - 字元串訊息(或訊息類別別中的鍵)

logrb

public void logrb(Level level,
                  String sourceClass,
                  String sourceMethod,
                  String bundleName,
                  String msg,
                  Object param1)
記錄一條訊息,具有指定的源類別、方法和資源包名,帶有單個日誌訊息的物件參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

使用指定的資源包本地化 msg 字元串。如果資源包名為 null,或者一個空 String 或無效,那麼不本地化 msg 字元串。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
bundleName - 本地化 msg 的資源包名,可以為 null
msg - 字元串訊息(或訊息類別別中的鍵)
param1 - 日誌訊息的參數。

logrb

public void logrb(Level level,
                  String sourceClass,
                  String sourceMethod,
                  String bundleName,
                  String msg,
                  Object[] params)
記錄一條訊息,具有指定的源類別、方法和資源包名,帶有一組物件參數。

如果當前對於給定的訊息級別而言 logger 是啟用的,則創建相應的 LogRecord 並轉發到所有已註冊的輸出 Handler 物件。

使用指定的資源包本地化 msg 字元串。如果資源包名為 null,或者一個空 String 或無效,那麼不本地化 msg 字元串。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
bundleName - 本地化 msg 的資源包名(可能為 null)
msg - 字元串訊息(或訊息類別別中的鍵)
params - 訊息的一組參數

logrb

public void logrb(Level level,
                  String sourceClass,
                  String sourceMethod,
                  String bundleName,
                  String msg,
                  Throwable thrown)
記錄一條訊息,具有指定的源類別、方法和資源包名,帶有相關的可拋出物件。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的參數存儲在 LogRecord 中,而 LogRecord 則被轉發到所有已註冊的輸出處理程序。

使用指定的資源包本地化 msg 字元串。如果資源包名為 null,或者一個空 String 或無效,那麼不本地化 msg 字元串。

注意,拋出的參數存儲在 LogRecord 拋出屬性中,而不是存儲在 LogRecord 參數屬性中。因此特別通過輸出 Formatter 來處理參數,而不是將其視為 LogRecord 訊息屬性的格式化參數。

參數:
level - 某個訊息級別標識符,例如 SEVERE
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 發出日誌記錄請求的方法名
bundleName - 本地化 msg 的資源包名,可以為 null
msg - 字元串訊息(或訊息類別別中的鍵)
thrown - 與日誌訊息相關的可拋出物件。

entering

public void entering(String sourceClass,
                     String sourceMethod)
記錄一個方法條目。

這是一個可為方法記錄條目的便捷方法。記錄帶訊息 "ENTRY" 的 LogRecord、日誌級別 FINER、給定的 sourceMethod 和 sourceClass。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 所輸入的方法名

entering

public void entering(String sourceClass,
                     String sourceMethod,
                     Object param1)
記錄一個方法條目,帶有一個參數。

這是一個可為方法記錄條目的便捷方法。記錄帶訊息 "ENTRY {0}" 的 LogRecord、日誌級別 FINER,以及給定的 sourceMethod、sourceClass 和參數。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 所輸入的方法名
param1 - 所輸入的方法參數

entering

public void entering(String sourceClass,
                     String sourceMethod,
                     Object[] params)
記錄一個方法條目,帶有一組參數。

這是一個可為方法記錄條目的便捷方法。記錄帶訊息 "ENTRY"(後跟格式 {N} 指示符表示參數陣列中的每個條目)的 LogRecord、日誌級別 FINER、給定的 sourceMethod、sourceClass 和參數。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 所輸入的方法名
params - 所輸入的一組方法參數

exiting

public void exiting(String sourceClass,
                    String sourceMethod)
記錄一個方法返回。

這是一個便捷方法,可以用來記錄一個方法的返回。記錄帶有訊息 "RETURN" 的 LogRecord、日誌級別 FINER、給定的 sourceMethod 和 sourceClass。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 方法名

exiting

public void exiting(String sourceClass,
                    String sourceMethod,
                    Object result)
記錄一個方法返回,帶有結果物件。

這是一個便捷方法,可以用來記錄從方法返回物件。記錄帶訊息 "RETURN {0}" 的 LogRecord、日誌級別 FINER、給定的 sourceMethod、sourceClass 和結果物件。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 方法名
result - 所返回的 Object

throwing

public void throwing(String sourceClass,
                     String sourceMethod,
                     Throwable thrown)
正拋出異常的記錄。

這是一個便捷方法,可以用來記錄某個方法拋出了異常並終止。使用 FINER 級別進行日誌記錄。

如果當前對於給定的訊息級別而言 logger 是啟用的,那麼將給定的參數存儲在 LogRecord 中,而 LogRecord 則被轉發到所有已註冊的輸出處理程序。將 LogRecord 的訊息設置為 "THROW"。

注意,拋出的參數存儲在 LogRecord 拋出屬性中,而不是存儲在 LogRecord 參數屬性中。因此特別通過輸出 Formatter 來處理參數,而不是將其視為 LogRecord 訊息屬性的格式化參數。

參數:
sourceClass - 發出日誌記錄請求的類別名
sourceMethod - 方法名
thrown - 所拋出的可拋出物件

severe

public void severe(String msg)
記錄一條 SEVERE 訊息。

如果當前對於 SEVERE 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

warning

public void warning(String msg)
記錄一條 WARNING 訊息。

如果當前對於 WARNING 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

info

public void info(String msg)
記錄一條 INFO 訊息。

如果當前對於 INFO 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

config

public void config(String msg)
記錄一條 CONFIG 訊息。

如果當前對於 CONFIG 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

fine

public void fine(String msg)
記錄一條 FINE 訊息。

如果當前對於 FINE 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

finer

public void finer(String msg)
記錄一條 FINER 訊息。

如果當前對於 FINER 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

finest

public void finest(String msg)
記錄一條 FINEST 訊息。

如果當前對於 FINEST 訊息級別而言 logger 是啟用的,那麼將給定的訊息轉發到所有已註冊的輸出 Handler 物件。

參數:
msg - 字元串訊息(或訊息類別別中的鍵)

setLevel

public void setLevel(Level newLevel)
              throws SecurityException
設置日誌級別,指定此 logger 記錄的訊息級別。將級別低於此值的訊息丟棄。可以使用級別值 Level.OFF 來關閉日誌記錄。

如果新的級別為 null,則意味著此節點應該繼承它最近的祖先(具有特定的非 null 級別值)的級別。

參數:
newLevel - 日誌級別的新值。
拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

getLevel

public Level getLevel()
獲取已為此 Logger 指定的日誌級別(Level)。結果可能為 null,這意味著此 logger 的有效級別將繼承它的父 Logger。

返回:
此 Logger 的級別

isLoggable

public boolean isLoggable(Level level)
檢查給定級別的訊息實際上是否由此 logger 記錄。此檢查是根據 Logger 的有效級別(可能繼承自它的父 Logger)進行的。

參數:
level - 訊息日誌記錄的級別
返回:
如果當前正在記錄給定的訊息級別,則返回 true

getName

public String getName()
獲取此 logger 的名稱。

返回:
logger 的名稱。對於匿名 Logger 來說,名稱為 null

addHandler

public void addHandler(Handler handler)
                throws SecurityException
添加一個日誌 Handler 以接收日誌記錄訊息。

在預設情況下,Logger 還將其輸出發送到它們的父 logger 中。通常,根 Logger 配置有一組 Handler,這些 Handler 本質上作為所有 logger 的預設處理程序。

參數:
handler - 日誌記錄 Handler
拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")

removeHandler

public void removeHandler(Handler handler)
                   throws SecurityException
移除一個日誌 Handler。

如果無法找到給定的 Handler 或其為 null,則靜默返回。

參數:
handler - 日誌記錄 Handler
拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

getHandlers

public Handler[] getHandlers()
獲得與此 logger 相關的 Handler。

返回:
一組已註冊的 Handler

setUseParentHandlers

public void setUseParentHandlers(boolean useParentHandlers)
指定此 logger 是否應該將其輸出發送到它的父 Logger。這意味著從名稱空間向上遞歸,任何 LogRecord 都將被寫入到其父 Handler,並且可能是祖父 Handler。

參數:
useParentHandlers - 如果要將輸出發送到其父 logger,則為 true。
拋出:
SecurityException - 如果安全管理器存在並且調用者不具有 LoggingPermission("control")。

getUseParentHandlers

public boolean getUseParentHandlers()
獲知此 logger 是否將其輸出發送到它的父 logger。

返回:
如果要將輸出發送到其父 logger,則返回 true

getParent

public Logger getParent()
返回此 Logger 的父 logger。

此方法返回名稱空間中最近的現存父 logger。因此,如果一個 Logger 名為 "a.b.c.d",並且已經創建了一個名為 "a.b" 的 logger,但是不存在名為 "a.b.c" 的 logger,那麼對 Logger "a.b.c.d" 調用 getParent 將返回 Logger "a.b"。

如果對名稱空間中的根 Logger 調用該方法,則結果為 null。

返回:
最近的現有父 Logger

setParent

public void setParent(Logger parent)
設置此 Logger 的父 Logger。名稱空間改變時,由 LogManager 使用此方法來更新 Logger。

不應該從應用程序程式碼中調用此方法。

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

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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