JUL是jdk自带的日志功能,它默认的配置文件在jdk的安装路径下/jre/lib.logging.properties
JUL执行原理
首先日志输出,则需要Logger对象,Logger对象由LogManager对logging.properties文件进行加载,,并保存Logger对象在HashTable中,即map集合,通过键值对的方式,因此你自定义Logger的name会以键的方式保存下来,在获取Logger时只要输入对于的name即可拿到。拿到Logger对象之后可以为之设置日志级别,还可以通过过滤器判断是否放行,然后通过Handler控制日志的输出位置,通过Formatter控制日志的格式等。
#为顶级父元素RootLogger指定默认的处理器:ConsoleHandler,即若是你没有自定义Logger,就用这个Logger
handlers= java.util.logging.ConsoleHandler
#顶级父元素默认的日志级别为INFO,即此Logger的日志级别是INFO
.level= INFO
#自定义Logger,即该Logger的name为sun,调用时这样即可 Logger logger = Logger.getLogger("sun");
#指定了自定义Logger的handlers
sun.handlers = java.util.logging.ConsoleHandler
#指定了自定义Logger的日志级别
sun.level = CONFIG
#关闭默认配置
sun.useParentHandlers = false
#向文件输出的handler对象
#指定路径
java.util.logging.FileHandler.pattern = D:\\ying.log
#指定文件内容的大小
java.util.logging.FileHandler.limit = 50000
#指定日志文件的个数
java.util.logging.FileHandler.count = 1
#指定日志文件的格式
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#指定以追加的方式添加日志内容
java.util.logging.FileHandler.append = true
#向控制台输出的handler对象
#指定日志级别
java.util.logging.ConsoleHandler.level = CONFIG
#指定日志的格式
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
#指定日志的编码
java.util.logging.ConsoleHandler.encoding = UTF-8
#指定日志消息的格式
java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n
com.xyz.foo.level = SEVERE
public static void main(String[] args) throws RuntimeException, IOException {
// 1.通过本类加载器读取配置文件
InputStream inputStream = TestOne.class.getClassLoader().getResourceAsStream("logging.properties");
// 2.创建logManager,logManager是单例模式,因此不能new,去获取即可.
LogManager logManager = LogManager.getLogManager();
// 3.通过LogManager加载配置文件,会完成Logger的初始化,即将配置文件中的Logger(包括顶级Logger和我们自定义的Logger)添加到LogManager中,保存在HashTable中(即map集合).
logManager.readConfiguration(inputStream);
// 4.创建日志记录器
Logger logger = Logger.getLogger("sun");
logger.severe("日志内容!");
logger.config("config日志级别的日志~~~");
}