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>

.

相关推荐
nanxun88620 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454753 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程