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>

.

相关推荐
jian110582 分钟前
java spring -framework -mvc
java·spring·mvc
程序员Bears3 分钟前
JSP与JSTL:EL表达式与MVC分层模式的完美结合
java·开发语言·mvc
wktomo1 小时前
GO语言学习(七)
开发语言·学习·golang
自我意识的多元宇宙1 小时前
Java List 接口知识点详解
java·开发语言
zhangxzq1 小时前
JVM 性能问题排查实战10连击
java·运维·jvm·经验分享·docker
linux-hzh2 小时前
第二章 Java语言基础
java·开发语言
qq_214225872 小时前
深入解析 Java GC 调优:减少 Minor GC 频率,优化系统吞吐
java·jvm·其他·性能优化
jiuweiC2 小时前
docker使用
java·docker·eureka
TE-茶叶蛋2 小时前
Web Workers 使用指南
开发语言·前端·javascript
五月茶2 小时前
JUC高并发编程
java·开发语言·jvm