JDK中的log框架学习总结

本文介绍了JDK日志框架的基本组成及使用方法,详细解释了观察者模式的应用,并介绍了如何配置日志输出方式和格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看《Agile Java》,看到日志一节,收获颇多,所以发个贴总结和大家分享下。

JDK的日志框架的包名是java.util.logging,主要的类有:

ConsoleHandler 
ErrorManager
FileHandler
Formatter
Handler
Level
Logger
LoggingPermission
LogManager
LogRecord
MemoryHandler
SimpleFormatter
SocketHandler
StreamHandler
XMLFormatter


其简单用法如下:
Logger logger = Logger.getLogger(getClass().getName());  //根据当前的class.getName()获得日志实例
logger.info(message); //用日志输出一条info级别的消息;



日志级别有7个等级,分别是:
severe严重、warning警告、info信息、config配置、fine良好、finner较好、finest最好
如果日志对象设置为警告,那么只能输出警告和严重的日志;

JDK中的日志设计使用了[b]观察者模式[/b],观察者就是Handler,发布日志时会调用所有注册(logger.addHandler(handler))过的Handler中的publish(LogRecord)方法。默认Handler就ConsoleHandler,还有FileHandler、SocketHandler,MemoryHandler。

每条日志都封装在LogRecord对象中。

默认情况下使用的jre\lib\logging.properties配置文件来输出日志,也可以通过java.util.logging.config.file系统属性来自定义日志属性配置文件。例如: java -Djava.util.logging.config.file=myfile

配置文件中有一段
java.util.logging.FileHandler.pattern = %h/java%u.log

其中%h和%u叫做域,域%h告诉FileHandler将日志文件存储在用户主目录。FileHandler定义很多域,包括%t和%g,%t代表临时目录,%g代表循环计数,联合使用java.util.logging.FileHandler.count和java.util.logging.FileHandler.limit属性。属性limit代表以字节为单位的日志文件的上限。如果为0,表示日志文件大小不做限制。当日志文件的大小达到了上限,FileHandler对象会关闭该文件。域count指定FileHandler可以循环使用多少个日志文件。如果count为1,那么当达到上限时,FileHandler会继续使用原来的日志文件。

配置文件可以定义输出格式,每种格式都是java.util.logging.Formatter的子类,Sun提供了两种实现SimpleFormatter和XMLFormatter,前者生成两行日志信息,后者生成XML格式的日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值