温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Logger 怎样自定义格式

发布时间:2026-09-12 11:11:04 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

在 Java 中,java.util.logging.Logger(JUL)是标准日志框架,可以通过 自定义 Formatter 来改变日志输出格式。

下面从 最常用方式示例 一步步说明。


一、核心思路

  1. 继承 java.util.logging.Formatter
  2. 重写 format(LogRecord record) 方法
  3. 将 Formatter 设置到 Handler
  4. 将 Handler 设置到 Logger

二、自定义 Formatter 示例

1️⃣ 自定义格式类

import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MyFormatter extends Formatter {

    private static final SimpleDateFormat sdf =
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public String format(LogRecord record) {
        String time = sdf.format(new Date(record.getMillis()));
        String level = record.getLevel().getName();
        String name = record.getLoggerName();
        String msg = record.getMessage();

        return String.format("%s [%s] %s - %s%n",
                time, level, name, msg);
    }
}

输出示例:

2026-01-15 10:30:12 [INFO] com.example.Test - 程序启动

2️⃣ 使用自定义 Formatter

import java.util.logging.*;

public class LoggerDemo {
    public static void main(String[] args) throws Exception {
        Logger logger = Logger.getLogger("com.example");
        logger.setUseParentHandlers(false); // 关闭默认控制台格式

        ConsoleHandler handler = new ConsoleHandler();
        handler.setFormatter(new MyFormatter());

        logger.addHandler(handler);
        logger.setLevel(Level.ALL);
        handler.setLevel(Level.ALL);

        logger.info("程序启动");
        logger.warning("警告信息");
    }
}

三、常见格式增强

✅ 包含线程名

record.getThreadID()

✅ 包含异常堆栈

@Override
public String format(LogRecord record) {
    StringBuilder sb = new StringBuilder();
    sb.append(formatMessage(record)).append("\n");

    if (record.getThrown() != null) {
        record.getThrown().printStackTrace();
    }
    return sb.toString();
}

四、通过 logging.properties 配置(可选)

handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter=com.example.MyFormatter

五、如果你用的是其他日志框架

框架 自定义格式方式
Log4j2 PatternLayout
Logback logback.xml pattern
SLF4J 本身不处理格式

如果你愿意,可以告诉我:

  • ✅ 用的是哪种 Logger(JUL / Log4j / Logback)
  • ✅ 想要的最终格式样例

我可以直接帮你写完整配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI