It is clearly a bad idea to use jakarta.json.Json, which looks up jakarta.json.spi.JsonProvider using java.util.ServiceLoader for each method call:

perf: Reuse a single JsonProvider.

This speeds up the formatter significantly.

Before:

    Benchmark                                         Mode  Cnt     Score      Error  Units
    FormatterBenchmark.massivelyStructuredLogRecord  thrpt   10  6552.727 ± 2169.572  ops/s
    FormatterBenchmark.simpleLogRecord               thrpt   10  8126.699 ± 2259.912  ops/s
    FormatterBenchmark.structuredLogRecord           thrpt   10  5594.849 ± 1129.151  ops/s

After:

    Benchmark                                         Mode  Cnt       Score        Error  Units
    FormatterBenchmark.massivelyStructuredLogRecord  thrpt   10  137879.001 ±  30467.644  ops/s
    FormatterBenchmark.simpleLogRecord               thrpt   10  896085.217 ± 249890.421  ops/s
    FormatterBenchmark.structuredLogRecord           thrpt   10  553428.807 ± 194787.754  ops/s