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

Java中如何实现类似Golang slog的具名字段日志?

关于Java日志API支持具名字段日志的疑问

我想在Java中实现类似Golang slog的具名字段日志功能,以下是对应的Golang示例代码:

package main

import (
    "log/slog"
    "os"
)

func main() {
    logLevel := new(slog.LevelVar) // 默认级别为Info
    logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: logLevel}))
    slog.SetDefault(logger)

    slog.Info("this is a test info message",
        slog.Bool("my-flag", true),
        slog.Int("my-int", 123),
        slog.Float64("my-float64", 3.14159),
        slog.String("my-name", "abcdefg"))
}

这段代码生成的JSON格式日志如下:

{"time":"2024-04-05T16:54:14.028207-05:00","level":"INFO","msg":"this is a test info message","my-flag":true,"my-int":123,"my-float64":3.14159,"my-name":"abcdefg"}

我了解Java中有三种常用日志API:

  • System.Logger
  • slf4j
  • log4j API(org.apache.logging.log4j.Logger)

目前我认为这三者都不支持像Golang slog那样的具名字段日志,请问这个结论是否正确?我有没有遗漏什么?这种功能看起来应该不难实现,但我尝试为这三个API编写示例代码后,仍没找到解决办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:51:41