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
相关产品推荐
相关产品推荐

