JUL 日志框架
测试代码:
package com.ycy.mp_generator.jul;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.*;
public class JULTest {
//快速入门
@Test
public void testQuick(){
//获取日志记录器
Logger logger = Logger.getLogger("JULTest");
//日志输出
logger.info("hello jul");
//通用方法进行记录
logger.log(Level.INFO, "info msg");
//通过占位符 方式输出变量值
String name = "yyy";
Integer age = 23;
logger.log(Level.INFO,"用户名:{0},年龄:{1}",new Object[]{name,age});
}
//日志级别
@Test
public void testLogLevel(){
//获取对象日志
Logger logger = Logger.getLogger("JULTest");
//日志记录输出
logger.severe("server");
logger.warning("warning");
logger.info("info");//jul 默认日志输出级别
logger.config("config");
logger.fine("fine");
logger.finer("finer");
logger.finest("finest");
}
//自定义日志级别
@Test
public void testLogConfig() throws IOException {
//获取对象日志
Logger logger = Logger.getLogger("JULTest");
// 关闭系统默认的日志级别
logger.setUseParentHandlers(false);
// 自定义配置日志级别
// ConsoleHander
ConsoleHandler consoleHhander = new ConsoleHandler();
//创建简单格式化转化对象
SimpleFormatter simpleFormatter = new SimpleFormatter();
// 进行关联
consoleHhander.setFormatter(simpleFormatter);
logger.addHandler(consoleHhander);
// 配置日志具体级别
logger.setLevel(Level.ALL);
consoleHhander.setLevel(Level.ALL);
//场景 FileHandler 输出指定文件夹
FileHandler fileHandler = new FileHandler("E:\\log\\jul.txt");
//进行关联
fileHandler.setFormatter(simpleFormatter);
logger.addHandler(fileHandler);
//日志记录输出
logger.severe("server");
logger.warning("warning");
logger.info("info");//jul 默认日志输出级别
logger.config("config");
logger.fine("fine");
logger.finer("finer");
logger.finest("finest");
}
// Logger 对象父子关系
@Test
public void testLogParent(){
Logger logger1 = Logger.getLogger("com.ycy");
Logger logger2 = Logger.getLogger("com");
//关闭默认配置
logger2.setUseParentHandlers(false);
//测试
System.out.println(logger1.getParent() == logger2);
System.out.println(logger1.getParent().getName());
System.out.println(logger2.getParent().getName());
// ConsoleHander
ConsoleHandler consoleHhander = new ConsoleHandler();
//创建简单格式化转化对象
SimpleFormatter simpleFormatter = new SimpleFormatter();
// 进行关联
consoleHhander.setFormatter(simpleFormatter);
logger2.addHandler(consoleHhander);
// 配置日志具体级别
logger2.setLevel(Level.ALL);
consoleHhander.setLevel(Level.ALL);
//日志记录输出
logger1.severe("server");
logger1.warning("warning");
logger1.info("info");//jul 默认日志输出级别
logger1.config("config");
logger1.fine("fine");
logger1.finer("finer");
logger1.finest("finest");
}
@Test
public void testLogProperties() throws IOException {
// 读取配置文件,通过类加载器
InputStream ins = JULTest.class.getClassLoader().getResourceAsStream("logging.properties");
// 创建LogManger
LogManager logManager = LogManager.getLogManager();
// 通过LogManger加载配置文件
logManager.readConfiguration(ins);
// 创建日志记录器
Logger logger = Logger.getLogger("com.ycy");
//日志记录输出
logger.severe("server");
logger.warning("warning");
logger.info("info");//jul 默认日志输出级别
logger.config("config");
logger.fine("fine");
logger.finer("finer");
logger.finest("finest");
// 创建日志记录器
Logger logger1 = Logger.getLogger("test");
//日志记录输出
logger1.severe("server test");
logger1.warning("warning test");
logger1.info("info test");//jul 默认日志输出级别
logger1.config("config test");
logger1.fine("fine test");
logger1.finer("finer test");
logger1.finest("finest test");
}
}
配置文件:
#RootLogger顶级父元素指定的默认处理器为:ConsoleHandler
handlers= java.util.logging.FileHandler
#RootLogger顶级父元素指定的默认日志级别为:ALL
.level= ALL
# 自定定义 Logger 的使用
com.ycy.handlers = java.util.logging.ConsoleHandler
com.ycy.level = CONFIG
# 关闭默认配置
com.ycy.useParentHandlers = false
# 向文件输出的 handler 对象
# 指定日志文件的路径
java.util.logging.FileHandler.pattern = E:\\log\\java%u.log
# 指定日志文件的内容大小
java.util.logging.FileHandler.limit = 50000
# 指定日志文件数量
java.util.logging.FileHandler.count = 1
# 指定 handler 对象日志消息格式
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# 指定以追加的方式添加日志内容
java.util.logging.FileHandler.append = true
# 向控制台输出的 handler 对象
# 指定 handler 对象的日志级别
java.util.logging.ConsoleHandler.level = ALL
# 指定 hander 对象的日志消息格式对象
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 指定 hangdler 对象的字符集
java.util.logging.ConsoleHandler.encoding = UTF-8
# 指定消息的格式
java.util.logging.SimpleFormatter.format = %4$s: %5$s [%1$tc]%n