Java日志学习五:JDK Logger源码
一.JDK Logger
???? JDK从1.4版本开始有了自己的日志系统,相比log4j slf4j jcl,JDK Logger显得简单明了,它没有像其它几个框架,都想去做门面,它只是简单的做了自己的事情。下一篇文章将详细比较这四个日志以及相互之间的桥接。在此不啰嗦。
?
二.JDK Logger核心类
public static final Level OFF = new Level("OFF",Integer.MAX_VALUE, defaultBundle); public static final Level SEVERE = new Level("SEVERE",1000, defaultBundle); public static final Level WARNING = new Level("WARNING", 900, defaultBundle); public static final Level INFO = new Level("INFO", 800, defaultBundle); public static final Level CONFIG = new Level("CONFIG", 700, defaultBundle); public static final Level FINE = new Level("FINE", 500, defaultBundle); public static final Level FINER = new Level("FINER", 400, defaultBundle); public static final Level FINEST = new Level("FINEST", 300, defaultBundle); public static final Level ALL = new Level("ALL", Integer.MIN_VALUE, defaultBundle);?Formatter:格式化LogRecord。JDK Logging支持两种类型的Formatter:SimpleFormatter和XMLFormatter,默认采用SimpleFormatter,它先打印日期和时间、LoggerName或source ClassName、方法名称,然后换行,在打印日志级别、本地化后的消息,然后换行,打印异常信息。而XMLFormatter实现getHead()、getTail()方法,并且将每条记录写成一条<record></record>记录Handler:实现将日志写入指定目的地,如ConsoleHandler、FileHandler、SocketHandler即对应将日志写入控制台、文件、Socket端口。类似于Log4J中的Appender。
默认JDK Logging实现了StreamHandler,而StreamHandler有三个子类:ConsoleHandler、FileHandler、SocketHandler。StreamHandler支持的配置有:
java.util.logging.StreamHandler.level 设置当前Handler支持的级别,默认为FINE
java.util.logging.StreamHandler.filter 设置当前Handler的Filter,默认为null
java.util.logging.StreamHandler.formatter 设置当前Handler的Formatter类,默认为SimpleFormatter
java.util.logging.StreamHandler.encoding 设置当前Handler的编码方式,默认为null
三.Logger初始化
???? Logger.getLogger(JavaLoggerTest.class.getName())开始
?
四.logging.properties配置文件
?