JavaTM 2 Platform
Standard Ed. 6

java.util.logging
類別 MemoryHandler

java.lang.Object
  繼承者 java.util.logging.Handler
      繼承者 java.util.logging.MemoryHandler

public class MemoryHandler
extends Handler

Handler 在記憶體中的循環緩衝區中對請求進行緩衝處理。

通常,此 Handler 只將傳入的 LogRecords 存儲到記憶體緩衝區,並丟棄原來的記錄。此緩衝非常經濟,並且避免了格式化開銷。在一定的觸發條件下,MemoryHandler 將其當前的緩衝區內容 push 到目標 Handler 中,此 Handler 通常將內容發佈到外界。

有三種主要模型用於觸發緩衝區的 push 操作:

配置:預設情況下,使用以下 LogManager 配置屬性初始化每個 MemoryHandler。如果沒有定義該屬性(或者有無效的值),則使用指定的預設值。如果沒有定義預設值,則拋出 RuntimeException。

從以下版本開始:
1.4

建構子摘要
MemoryHandler()
          根據 LogManager 配置屬性創建一個 MemoryHandler,並對其進行配置。
MemoryHandler(Handler target, int size, Level pushLevel)
          創建一個 MemoryHandler
 
方法摘要
 void close()
          關閉 Handler,並釋放所有相關的資源。
 void flush()
          導致目標 Handler 上的刷新。
 Level getPushLevel()
          獲得 pushLevel
 boolean isLoggable(LogRecord record)
          檢查此 Handler 是否實際將給定的 LogRecord 記錄到其內部緩衝區。
 void publish(LogRecord record)
          將 LogRecord 存儲在內部緩衝區。
 void push()
          將所有已緩衝的輸出 push 到目標 Handler 中。
 void setPushLevel(Level newLevel)
          設置 pushLevel
 
從類別 java.util.logging.Handler 繼承的方法
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

MemoryHandler

public MemoryHandler()
根據 LogManager 配置屬性創建一個 MemoryHandler,並對其進行配置。


MemoryHandler

public MemoryHandler(Handler target,
                     int size,
                     Level pushLevel)
創建一個 MemoryHandler

除了使用給定的 pushLevel 參數和緩衝區大小參數之外,其他都按 LogManager 的屬性(或預設值)進行配置 MemoryHandler

參數:
target - 將輸出發佈到的 Handler。
size - 緩衝區的日誌記錄數(必須大於 0)
pushLevel - 要 push 的訊息級別。
拋出:
IllegalArgumentException - 如果 size <=0。
方法詳細資訊

publish

public void publish(LogRecord record)
LogRecord 存儲在內部緩衝區。

如果有 Filter,則調用其 isLoggable 方法以檢查給定的日誌記錄是否為 loggable。如果不是,則返回它。否則,將給定的記錄複製到內部循環緩衝區。然後將該記錄的級別屬性與 pushLevel 進行比較。如果給定的級別大於等於 pushLevel,則調用 push 將所有已緩衝的記錄寫入到目標輸出 Handler 中。

指定者:
類別 Handler 中的 publish
參數:
record - 日誌事件的描述。忽略 null 記錄,並且也不發佈它。

push

public void push()
將所有已緩衝的輸出 push 到目標 Handler 中。

然後清空緩衝區。


flush

public void flush()
導致目標 Handler 上的刷新。

注意,要將 MemoryHandler 緩衝區的當前內容全部寫出。這樣會要求進行 "push" 操作。

指定者:
類別 Handler 中的 flush

close

public void close()
           throws SecurityException
關閉 Handler,並釋放所有相關的資源。這也將關閉目標 Handler

指定者:
類別 Handler 中的 close
拋出:
SecurityException - 如果存在安全管理器並且調用者不具有 LoggingPermission("control")

setPushLevel

public void setPushLevel(Level newLevel)
                  throws SecurityException
設置 pushLevel。將 LogRecord 複製到內部緩衝區後,如果它的級別大於等於 pushLevel,則調用 push

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

getPushLevel

public Level getPushLevel()
獲得 pushLevel

返回:
pushLevel 的值。

isLoggable

public boolean isLoggable(LogRecord record)
檢查此 Handler 是否實際將給定的 LogRecord 記錄到其內部緩衝區。

此方法檢查 LogRecord 是否有合適的級別,以及是否滿足任何的 Filter。但是並檢查 LogRecord 是否導致 "push" 緩衝區的內容。如果 LogRecord 為 Null,則該方法返回 false。

覆寫:
類別 Handler 中的 isLoggable
參數:
record - 一個 LogRecord
返回:
如果記錄 LogRecord,則返回 true。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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