C# Serilog destructuring operator-是否在日志级别检查之前对其进行分解

C# Serilog destructuring operator-是否在日志级别检查之前对其进行分解,c#,.net,serilog,C#,.net,Serilog,我试图理解serilog destructuring操作符对性能的影响,特别是在记录器检查是否可以记录预期消息之前,验证是否没有执行destructure。例如,以下代码: var sensorInput = new { Latitude = 25, Longitude = 134 }; Log.Debug("Processing {@SensorInput}", sensorInput); 不应导致以下情况: var tmp = destructure(sensorInput); read

我试图理解serilog destructuring操作符对性能的影响,特别是在记录器检查是否可以记录预期消息之前,验证是否没有执行destructure。例如,以下代码:

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()
,这将导致