JUL 日志

JUL日志级别

日志分为7个级别,详细信息我们可以在Level类中查看:

  • SEVERE(最高值)- 一般用于代表严重错误
  • WARNING - 一般用于表示某些警告,但是不足以判断为错误
  • INFO (默认级别) - 常规消息
  • CONFIG
  • FINE
  • FINER
  • FINEST(最低值)

Properties配置文件

properties 复制代码
# RootLogger 的默认处理器为
handlers= java.util.logging.ConsoleHandler
# RootLogger 的默认的日志级别
.level= CONFIG

使用日志处理器

java 复制代码
public class Main {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(Main.class.getName());  // 获取logger
        logger.log(Level.SEVERE, "severe error");
        logger.log(Level.WARNING, "warning");
        logger.log(Level.INFO, "info");
        logger.log(Level.CONFIG, "config");
        logger.log(Level.FINE, "fine");
        logger.log(Level.FINEST,"finest");
    }
}

默认级别低于INFO的不会打印到控制台上

setLevel(Level newLevel):设置日志级别,指定此日志记录器将记录的消息级别。低于此值的消息级别将被丢弃。级别值 Level.OFF 可用于关闭日志记录。Level.ALL表示全部级别日志将被打印

自定义日志处理器级别

java 复制代码
public class Main {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(Main.class.getName());  // 获取logger

        logger.setLevel(Level.ALL);          // 设置全部级别日志都打印
        logger.setUseParentHandlers(false);  // 不使用父(默认)日志处理器
        // 使用自定义日志处理器
        ConsoleHandler consoleHandler = new ConsoleHandler();
        consoleHandler.setLevel(Level.ALL);
        logger.addHandler(consoleHandler);

        logger.log(Level.SEVERE, "severe error");
        logger.log(Level.WARNING, "warning");
        logger.log(Level.FINE, "lower than info");
    }
}

文件日志处理器

将日志输出到本地的log文件上

java 复制代码
        FileHandler fileHandler = new FileHandler("test.log");
        fileHandler.setLevel(Level.WARNING);
        fileHandler.setFormatter(simpleFormatter);
        logger.addHandler(fileHandler);

但是这样得到的日志格式是xml格式的,使用SimpleFormatter将日志格式化

java 复制代码
        SimpleFormatter simpleFormatter = new SimpleFormatter();
        fileHandler.setFormatter(simpleFormatter);

日志过滤

java 复制代码
        Logger logger = Logger.getLogger(Main.class.getName());  // 获取logger
        logger.setFilter(record -> false); // lambda

setFilter接收的参数为一个Filter接口

指定某日志输出

java 复制代码
        Logger logger = Logger.getLogger(Main.class.getName());  // 获取logger
        logger.setFilter(record -> record.getMessage().equals("hello"));
        logger.info("hello");

开启mybatis日志

mybatis-config.xml中添加:

xml 复制代码
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

.

相关推荐
稚南城才子,乌衣巷风流1 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波1 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白1 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
名字还没想好☜2 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
皓月斯语2 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
音符犹如代码3 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉3 小时前
手撕小汇总
java·前端·javascript
初願致夕霞3 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
脱胎换骨-军哥3 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
唐青枫3 小时前
Java Kafka 实战指南:从 Topic、分区到 Spring Boot 可靠消息处理
java