java.util.logging.Handler
(2011-12-27 11:47:49)
标签:
handler
鏉傝皥
Handler负责从Logger中取出日志消息并将消息发送出去,比如发送到控制台、文件、网络上的其他日志服务或操作系统日志等。
Handler也具有级别概念,用于判断当前Logger中的消息是否应该被发送出去,可以使用定义好的各种日志级别(如Level.OFF表示关闭等)。
除了级别概念,一个Handler还可以具有自己的过滤器(Filter)、格式化器(Formatter)、错误管理器(ErrorManager)以及编码字符集等,这些属性借助LogManager中的配置信息进行设置。
Handler是一个抽象类,需要根据实际情况创建真正使用的具体Handler(如ConsoleHandler、FileHandler等),实现各自的publish、flush以及close等方法。
MemoryHandler,将当前日志信息写入内存缓冲区中同时丢弃缓存中以前的内容。某些事件可以触发MemoryHandler将内存缓冲区中的信息转发至另一个Handler,进而发送到最终目的地。触发这种动作的事件为:
新的日志信息的级别超过当前MemoryHandler所定义的pushLevel;
外部程序中调用了这个MemoryHandler的push方法;
MemoryHandler的子类可以重载log方法,并在log方法中逐一扫描每一条日志信息,当日志信息满足某种条件以后调用push方法。
缺省情况下MemoryHandler的配置为:
java.util.logging.MemoryHandler.level=Level.ALL
java.util.logging.MemoryHandler.filter=
java.util.logging.MemoryHandler.size=1000 //1000个LogEntity
java.util.logging.MemoryHandler.push=Level.SEVERE
java.util.logging.MemoryHandler.target=
java.util.logging.MemoryHandler.formatter=java.util.logging.SimpleFormatter
StreamHandler,所有基于I/O流的Handler的基类,将日志信息发送至给定的java.io.OutputStream中,默认配置为:
java.util.logging.StreamHandler.level=Level.INFO
java.util.logging.StreamHandler.filter=
java.util.logging.StreamHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.StreamHandler.encoding=
platform encoding> //MemoryHandler就不需要考虑编码问题
ConsoleHandler,将消息发送至System.err(而非System.out),默认配置与其父类StreamHandler相同。
FileHandler,将消息发送至单个一般文件或一个可回滚的文件集合。可回滚文件集中的文件依据文件大小进行回滚,久文件名称通过当前文件名附加编号0、1、2等方式依次进行标示。默认情况下日志信息都存放在I/O缓冲中,但如果一条完整的日志信息会触发清空缓冲的动作。与其父类StramHandler不同的是,FileHandler的默认格式器是java.util.logging.XMLFormatter:
java.util.logging.FileHandler.formatter=java.util.logging.XMLFormatter
此外还有一些自身所需的配置:
java.util.logging.FileHandler.limit=
limite> //写入单个文件的最大字节数
java.util.logging.FileHandler.count=1 //循环文件数量
java.util.logging.FileHandler.pattern="%h/java%u.log"
//文件名称模式
java.util.logging.FileHandler.append=false
//日志信息是否追加到任何已存在的文件末尾
文件名模式中可能出现的字符含义为:
"/" 本地目录分隔符;
"%t" 系统临时目录;
"%h" user.home环境变量的值
"%g" 为日志循环生成的编号,从0开始
"%u" 一个唯一的编号
"%%" %字符
SocketHandler,负责将日志信息发送至网络,默认情况下也采用java.util.logging.XMLFormatter格式。此外还有以下默认属性:
java.util.logging.SocketHandler.host=
default> //目的主机名称
java.util.logging.SocketHandler.port=
default> //目的主机端口
与FileHandler一样,SocketHandler也采用I/O缓存,当每一条日志信息结束时自动清空缓存。
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。