Serilog 解构运算符 - 它是否在日志级别检查之前解构

Serilog destructuring operator - does it destructure ahead of log level check

我正在尝试了解 serilog 解构运算符的性能影响,特别是为了验证在记录器检查是否可以记录预期消息之前未执行解构。例如下面的代码:

var sensorInput = new { Latitude = 25, Longitude = 134 };
Log.Debug("Processing {@SensorInput}", sensorInput);

不应导致类似的结果:

var tmp = destructure(sensorInput);

readonly bool _isDebug = Log.IsEnabled(LogEventLevel.Debug);
if (_isDebug) Log.Debug("Processing {var1}", tmp);

我确实检查了 Serilog 源代码,但我没有发现任何可以确认上述情况没有发生的东西 - 也许有人知道相关代码?

Serilog 将仅在事件启用时应用解构。 Debug() 调用 Write()does a level check before any more work is performed