You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用System.Logger时如何设置日志级别以输出DEBUG日志

问题根因

你的配置不生效是因为java.util.logging(JUL,即System.Logger默认底层实现)的日志输出受两层规则控制:

  1. 首先是Logger实例本身的日志级别,默认全局根Logger的级别为INFO,低于INFO级别的日志会直接在Logger层被拦截,不会向下传递
  2. 其次才是Handler的日志级别,你仅配置了ConsoleHandler的级别为FINEST,但Logger本身的级别没有放开,因此DEBUG日志无法输出。
System.Logger与JUL级别映射关系

对应关系如下,配置时需要注意匹配:

  • System.Logger.Level.TRACE → JUL Level.FINEST
  • System.Logger.Level.DEBUG → JUL Level.FINE
  • System.Logger.Level.INFO → JUL Level.INFO
  • System.Logger.Level.WARNING → JUL Level.WARNING
  • System.Logger.Level.ERROR → JUL Level.SEVERE
解决方法

方法1:代码内直接配置(适合测试/快速验证场景)

直接获取对应类的JUL Logger实例,修改其级别即可,修改后的代码如下:

import java.util.logging.Level;
import java.util.logging.Logger;

class LogTest {
    static {
        System.setProperty("java.util.logging.SimpleFormatter.format", "%1$tF: %5$s%n");
        System.setProperty("java.util.logging.ConsoleHandler.level", "FINEST");
        // 配置当前类对应的Logger级别为FINE,对应System.Logger的DEBUG级别
        Logger.getLogger(LogTest.class.getName()).setLevel(Level.FINE);
        // 如果需要全局所有Logger都生效,可以配置根Logger:
        // Logger.getLogger("").setLevel(Level.FINE);
    }
    public static void main(String[] args) {
        System.getLogger(LogTest.class.getName())
            .log(System.Logger.Level.INFO, "info");
        System.getLogger(LogTest.class.getName())
            .log(System.Logger.Level.DEBUG, "debug");
    }
}

运行后即可同时看到INFO和DEBUG级别的日志输出。

方法2:使用外部配置文件(适合生产环境)

创建独立的JUL配置文件logging.properties,内容如下:

# 全局默认日志级别,配置为FINE支持输出DEBUG日志
.level = FINE
# 控制台Handler配置
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = %1$tF: %5$s%n
# 也可单独为指定类/包配置级别,优先级高于全局配置
# com.example.LogTest.level = FINE

启动应用时添加JVM参数指定配置文件路径即可,无需在代码中硬编码配置:

-Djava.util.logging.config.file=path/to/your/logging.properties
注意事项
  • 子Logger会默认继承父Logger的级别,单独配置子Logger的级别会覆盖继承的配置
  • 若classpath中存在其他System.Logger实现(如log4j、slf4j的System Logger适配包),需确认当前使用的后端为JUL,否则JUL相关配置不会生效。

内容的提问来源于stack exchange,提问作者Benjamin Reed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:57:01