参考:https://blog.csdn.net/a232884c/article/details/121103424
1.简单使用
package com.fei.hanhanhanh;
import java.util.logging.Logger;
import java.util.logging.Level;
public class AAA {
public static void main(String[] args) {
Logger logger1 = Logger.getLogger(AAA.class.getName()); // com.fei.hanhanhanh.AAA
logger1.severe("severe");
logger1.warning("warning");
logger1.info("logger1");
Logger logger2 = Logger.getLogger(new AAA().getClass().getName());
logger2.log(Level.INFO,"logger2");
String name ="xiaoxu";
Integer age = 34;
logger2.log(Level.WARNING,"用户信息:{0},{1}",new Object[]{name,age});
}
}
2.自定义配置
package com.fei.hanhanhanh;
import java.io.File;
import java.io.IOException;
import java.util.logging.*;
public class BBB {
public static void main(String[] args) throws IOException {
Logger logger = Logger.getLogger(BBB.class.getName()); // 获取日志记录器Logger对象
logger.setLevel(Level.INFO); // 配置日志级别
logger.setUseParentHandlers(false); // 输出不发送到记录器的父级
ConsoleHandler consoleHandler = new ConsoleHandler(); // 控制台输出
SimpleFormatter simpleFormatter = new SimpleFormatter();
consoleHandler.setFormatter(simpleFormatter);
logger.addHandler(consoleHandler); // 关联
consoleHandler.setLevel(Level.INFO);
FileHandler fileHandler = new FileHandler("./src/com/fei/hanhanhanh/logs/a.log");//文件输出
fileHandler.setFormatter(simpleFormatter);
logger.addHandler(fileHandler); // 关联
fileHandler.setLevel(Level.WARNING);
logger.severe("severe");
logger.warning("warning");
logger.info("info");
logger.config("config");
logger.fine("fine");
logger.finer("finer");
logger.finest("finest");
}
}
3.Logger对象父子关系
子包会继承父包
package com.fei.hanhanhanh;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class DDD {
public static void main(String[] args) {
Logger logger1 = Logger.getLogger(DDD.class.getName()); // 子对象 com.fei.hanhanhanh.DDD 子包会默认继承父包
Logger logger2 = Logger.getLogger("com.fei.hanhanhanh"); // 父对象 com.fei.hanhanhanh
System.out.println(logger1.getParent()==logger2);
System.out.println("logger2 Parent——"+logger2.getParent()+"——name——"+logger2.getParent().getName() + "——");
logger2.setUseParentHandlers(false);
ConsoleHandler consoleHandler = new ConsoleHandler();
SimpleFormatter simpleFormatter = new SimpleFormatter();
consoleHandler.setFormatter(simpleFormatter);
logger2.addHandler(consoleHandler);
logger2.setLevel(Level.WARNING);
consoleHandler.setLevel(Level.WARNING);
logger1.severe("severe");
logger1.warning("warning");
logger1.info("info");
logger1.config("config");
logger1.fine("fine");
logger1.finer("finer");
logger1.finest("finest");
}
}
4.JUL默认配置文件
fname = System.getProperty("java.home"); // E:\Java\JDK
if (fname == null) {
throw new Error("Can't find java.home ??");
}
File f = new File(fname, "lib"); // E:\Java\JDK\lib
f = new File(f, "logging.properties"); // E:\Java\JDK\lib\logging.properties
4.1 修改默认配置文件
#RootLogger 顶级父元素指定的默认处理器为:ConsoleHandler
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler // 增加FileHandler
#RootLogger 顶级父元素默认的日志级别为:WARNING
.level= INFO
#自定义Logger使用:包名+handlers
com.fei.hanhanhanha.handlers = java.util.logging.ConsoleHandler
com.fei.hanhanhanha.level = SEVERE
#关闭默认配置
com.fei.hanhanhanha.useParentHandlers = false
// 改变文件输出路径
// "/" 本地路径名分隔符 "%t" 系统临时目录 "%h" "user.home" 系统属性的值
// "%g" 区分循环日志的生成号 "%u" 解决冲突的惟一号码 "%%" 转换为单个百分数符号"%"
java.util.logging.FileHandler.pattern = E:/Java/code/bbbbbb/src/com/fei/hanhanhanha/logs/%g.log
#指定文件内容大小
java.util.logging.FileHandler.limit = 50000
#指定日志文件数量
java.util.logging.FileHandler.count = 10
#指定handler对象日志消息格式对象
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
#指定以追加方式添加日志内容
java.util.logging.FileHandler.append = true
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
#指定日志消息格式
java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"
5.加载自定义配置文件
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class EEE {
public static void main(String[] args) throws IOException {
// InputStream in = com.fei.hanhanhanhan.EEE.class.getClassLoader().getResourceAsStream("com/fei/hanhanhanhan/logging.properties");
InputStream in = com.fei.hanhanhanhan.EEE.class.getResourceAsStream("logging.properties");
LogManager logManager = LogManager.getLogManager();
logManager.readConfiguration(in);
Logger l = Logger.getLogger(EEE.class.getName());
l.severe("severe");
l.warning("warning");
l.info("info");
l.config("config");
l.fine("fine");
l.finer("finer");
l.finest("finest");
}
}