01|JUL日志系统

参考: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");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值