一、用途
程序中记录日志,打印到控制台、文件等方式,记录过程可根据日志级别做筛选,日志格式可以自定义。
大概结构如下所示:
简要说明各个模块:
(1) LogManager:管理LoggerContext及Logger,可以添加、获取Logger。
(2) LoggerContext: 保存所有Logger,用于添加及获取Logger,由LoggerManager管理。LoggerContext中同时保存了Logger的弱引用,在释放Logger时使用到。
(3) Logger: 记录日志的对象,提供接口实现对日志消息以不同的日志级别进行记录,管理Handler、Formatter、Filter等。
(4) Handler: 记录日志真正的对象,包括FileHandler(记录到文件)、ConsoleHandler(记录到控制台)、StreamHandler(记录到流)、SocketHandler(通过socket发送日志?)等。
(5) Formatter: 处理日志的格式,包括SimpleFormatter(简单格式记录,显示时间、级别、线程、日志信息等)、XMLFormatter(以xml格式记录日志)等。
(6) Filter: 实现日志的过滤功能,通过自定义Filter,实现对某些日志的过滤处理。
(7) ErrorManager: 记录日志出错时的处理对象?
(8) LogRecord: 对日志消息的抽象。
二、详细介绍(结合源码)
详细描述如下:
(1)日志管理:
LoggerManager主要用来管理LogContext以及logger。
LoggerManager维护变量主要有:
(a) LogManager manager
manager对象单例,用于LogManager内部其他方法调用。在静态构造函数中实例化,在getLogManager()方法被调用时初始化:
1 public staticLogManager getLogManager() {2 if (manager != null) {3 manager.ensureLogManagerInitialized();4 }5 returnmanager;6 }7
8
9