JAVA Logging API 学习笔记

最近需要写日志,才想起来看看JAVA的日志。总结一下。

写一个日志流程可以是,创建一个Logger,可以放入LogManager统一管理,程序写入日志,Logger会先调用Logger中的Filter进行过滤,过滤后的日志送入Handler,在经过Handler中的Filter过滤,随后调用Handler中的Fomatter进行格式化,最终输出日志。如果还有其他的Handler,日志将会继续流动。在该Logger所有Handler处理过后,会依照继承层次,向上传递消息,并进行同上的处理。


LogManager
 只有一个实例,用来管理Logger,用来统一设置Logger的属性,还可以设置属性变化时的监听器。

Logger
用来记录日志的类,日志分为不同的级别,并可以设置什么级别以上需要记录,具体的设置可以在运行时设置,也可以在配置文件中设置,配置文件位于jre/lib/logging.properties

Logger继承层次
当创建Logger时,会输入一个名字,名字类似包名 soulxu.mylogger,soulxu则是mylogger的父日志,根日志是“”,子日志输入的日志会延继承层次向上传。

Level
消息级别,该类封装了一些常量,用来表示不同的级别,在Logger和Handler中都有setLevel方法,设置级别,他们会按照设置的级别对消息进行过滤。

Handler
用来决定日志的去向,库中提供了ConsoleHandler, FileHandler, MemoryHandler, SocketHandler, StreamHandler,每个日志可以添加多个Handler,消息按顺序传递,这好像算“监听者模式”!?
其中MemoryHandler比较特殊,他是个内存回环,可以设置一个数量值,当超过这个值,最老的日志将会丢失,并且还可以连接一个Handler在其后接收日志。

Filter
是个借口,一个过滤器,可以自己实现该接口,isLoggalbe(LogRecord),该方法返回true表示可以被记录下来,参数LogRecord是对每一条日志的封装

Formatter
是在Handler中对日志进行格式化,最后由Handler输出

你可能感兴趣的:(JAVA Logging API 学习笔记)