Use a Serilog template with the message as a property

This is to avoid the extra overhead of parsing each logged message and caching
it as described on the documentation page here:
https://github.com/serilog/serilog/wiki/Writing-Log-Events#message-template-recommendations

    Serilog events have a message template associated, not a message. Internally, Serilog parses and caches every template (up to a fixed size limit). Treating the string parameter to log methods as a message, as in the case below, will degrade performance and consume cache memory.