java中FileHandle_java.util.logging.Handler

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缓存,当每一条日志信息结束时自动清空缓存。

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值