Module java.logging

Class Handler

java.lang.Object
java.util.logging.Handler
直接已知的子类:
MemoryHandler, StreamHandler

public abstract class Handler extends Object
一个Handler对象接收来自Logger的日志消息并将它们导出。例如,它可以将它们写入控制台、写入文件、发送到网络日志服务、转发到操作系统日志等等。

Handler可以通过执行setLevel(Level.OFF)来禁用,并且可以通过使用适当级别的setLevel来重新启用。

Handler类通常使用LogManager属性为HandlerFilterFormatterLevel设置默认值。请参阅每个具体Handler类的特定文档。

自版本:
1.4
  • Constructor Details

    • Handler

      protected Handler()
      默认构造函数。生成的Handler具有Level.ALL的日志级别,没有FormatterFilter。默认的ErrorManager实例被安装为ErrorManager
  • Method Details

    • publish

      public abstract void publish(LogRecord record)
      发布一个LogRecord

      最初将日志请求发送到Logger对象,该对象初始化LogRecord并将其转发到这里。

      Handler负责在必要时格式化消息。格式化应包括本地化。

      参数:
      record - 日志事件的描述。空记录将被静默忽略并不会被发布。
    • flush

      public abstract void flush()
      刷新任何缓冲输出。
    • close

      public abstract void close() throws SecurityException
      关闭Handler并释放所有相关资源。

      关闭方法将执行flush,然后关闭Handler。调用close后,不应再使用此Handler。方法调用可能会被静默忽略,也可能会抛出运行时异常。

      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • setFormatter

      public void setFormatter(Formatter newFormatter) throws SecurityException
      设置一个Formatter。此Formatter将用于为此Handler格式化LogRecords

      某些Handlers可能不使用Formatters,在这种情况下,Formatter将被记住,但不会被使用。

      参数:
      newFormatter - 要使用的Formatter(不能为空)
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • getFormatter

      public Formatter getFormatter()
      返回此HandlerFormatter
      返回:
      Formatter(可能为空)。
    • setEncoding

      public void setEncoding(String encoding) throws SecurityException, UnsupportedEncodingException
      设置此Handler使用的字符编码。

      应在将任何LogRecords写入Handler之前设置编码。

      参数:
      encoding - 支持的字符编码的名称。可以为空,表示使用默认平台编码。
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
      UnsupportedEncodingException - 如果不支持指定的编码。
    • getEncoding

      public String getEncoding()
      返回此Handler的字符编码。
      返回:
      编码名称。可以为空,表示应使用默认编码。
    • setFilter

      public void setFilter(Filter newFilter) throws SecurityException
      设置一个Filter以控制此Handler上的输出。

      对于每次调用publishHandler将调用此Filter(如果非空)来检查是否应发布或丢弃LogRecord

      参数:
      newFilter - 一个Filter对象(可以为空)
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • getFilter

      public Filter getFilter()
      获取此Handler的当前Filter
      返回:
      一个Filter对象(可以为空)
    • setErrorManager

      public void setErrorManager(ErrorManager em)
      为此Handler定义一个ErrorManager。

      如果在使用此Handler时发生任何错误,将调用ErrorManager的“error”方法。

      参数:
      em - 新的ErrorManager
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • getErrorManager

      public ErrorManager getErrorManager()
      检索此Handler的ErrorManager。
      返回:
      此Handler的ErrorManager
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • reportError

      protected void reportError(String msg, Exception ex, int code)
      保护方便方法,向此Handler的ErrorManager报告错误。请注意,此方法检索并使用ErrorManager而不进行安全检查。因此,它可以在调用者可能没有特权的环境中使用。
      参数:
      msg - 描述性字符串(可以为空)
      ex - 异常(可以为空)
      code - 在ErrorManager中定义的错误代码
    • setLevel

      public void setLevel(Level newLevel) throws SecurityException
      设置指定将由此Handler记录的消息的日志级别。低于此值的消息级别将被丢弃。

      意图是允许开发人员打开大量日志记录,但限制发送到某些Handlers的消息。

      参数:
      newLevel - 日志级别的新值
      抛出:
      SecurityException - 如果存在安全管理器且调用者没有LoggingPermission("control")
    • getLevel

      public Level getLevel()
      获取指定将由此Handler记录的消息的日志级别。低于此级别的消息级别将被丢弃。
      返回:
      正在记录的消息级别。
    • isLoggable

      public boolean isLoggable(LogRecord record)
      检查此Handler是否实际记录给定的LogRecord

      此方法检查LogRecord是否具有适当的Level,以及它是否满足任何Filter。它还可能进行其他特定于Handler的检查,这些检查可能会阻止处理程序记录LogRecord。如果LogRecord为空,则返回false。

      参数:
      record - 一个LogRecord(可以为空)。
      返回:
      如果将记录LogRecord,则为true。