I saw a Rider suggestion not long ago to use pre-compiled message templates with ILogger methods. Something like the following:
Message template should be compile time constant
It turns out message templates are a thing. It sounded interesting, so I got curious to check what the performance would look like