I wasn’t aware GoLang had a “standard” logger. Last time I checked GoLang’s logging library was awful.
Log4j 2 has supported what you want ever since Json Template Layout was added. See https://logging.apache.org/log4j/2.x/manual/json-template-layout.html. To get what you want just specify a pattern (See PatterLayout) to the JsonTemplateLayout configuration. In addition, you can also include the Map fields as individual attributes. Here is an example configuration for the message "message": { "$resolver": "pattern", "pattern": “%K" }, Ralph > On Apr 7, 2024, at 9:28 AM, Clayton Wohl <claytonw...@gmail.com> wrote: > > The Golang standard library lets you do this: > > slog.Info("showing named arguments with structured logging", > slog.Bool("some-bool", true), > slog.Int("some-int", 123), > slog.Float64("some-float64", 1.234), > slog.String("some-string", "xyz")) > > which outputs the following at runtime: > > {"time":"2024-04-07T11:10:04.925291-05:00","level":"INFO","msg":"showing > named arguments with structured > logging","some-bool":true,"some-int":123,"some-float64":1.234,"some-string":"xyz"} > > I'd like to do this in Java. This seems to be a fairly common use > case. Log4j's API doesn't seem to offer this. The closest I can get > is: > > Logger logger = LogManager.getLogger(); > > logger.info(new MapMessage() > .with("someInt", 123) > .with("someFloat", 1.23456) > .with("someBool", true) > .with("someString", "abc")); > > which outputs the following at runtime. Notice that it just converted > the MapMessage to a string and put that in the JSON message field.: > > {"@timestamp":"2024-04-07T16:26:21.232Z","ecs.version":"1.2.0","log.level":"INFO","message":"someBool=\"true\" > someFloat=\"1.23456\" someInt=\"123\" > someString=\"abc\"","process.thread.name":"main","log.logger":"demo.Main"} > > Is it possible that log4j3 offer something like what Golang's slog does? > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org