java logging详解
当我们运行一个应用程序(Applicaiton)的时候,常常需要对程序的运行状态进行追踪。这个时候我们就要用到日志(Logging)功能了。
JDK本身为我们提供了一个工具包java.util.logging
来实现日志功能。接下我将基于官方文档和官方API来对java logging功能进行讲解。(作者水平有限,若有错误请勘正)
参考文档:
1.核心对象讲解
一个应用(Application)想要进行日志记录,需要用到以下几个对象:
Logger
(重点)LogRecord
(重点)Handler
(重点)Filter
Formatter
下面是对这5个类的讲解,先了解即可,后面的讲解会提及到其具体的用法。
(1)Logger
Logger
对象用于记录特定系统或应用程序组件的消息,Logger
通常使用分层的点分隔命名空间命名。Logger
名称可以是任意字符串,但它们通常应基于记录组件的包名或类名,例如 java.net
或 javax.swing
。此外,可以创建未存储在 Logger 命名空间中的“匿名”Logger
。
(2)LogRecord
LogRecord
对象用于在日志框架和单个日志处理程序之间传递日志请求。当LogRecord
被传递到日志框架时,它在逻辑上属于框架,不应再由客户端应用程序使用或更新。(我们最好不要人为进行改动)
(3)Handler
一个Handler
对象需要从Logger
获取日志信息(其实就是LogRecord
)并将它们输出。比如将信息输入到控制台上等。有三种Handler
:
StreamHandler
用于将格式化记录写入 OutputStreamConsoleHandler
用于将格式化记录写入 System.errFileHandler
将格式化日志记录写入单个文件或一组轮换日志文件SocketHandler
将格式化日志记录写入远程 TCP 端口MemoryHandler
在内存中缓冲日志记录
(4)Filter
Filter
可用于对记录的内容(LogRecord
)进行细粒度控制,超出日志级别提供的控制。(更精细)
Logger
和Handler
都可以有一个与之相关的Filter
,L