title: Serilog destructuring operator - does it destructure ahead of log level check
body: <p>I am trying to understand the performance impact of serilog destructuring operator, specifically to verify that destructure is not performed before the logger checks if the intended message can even be logged. For example, the following code:</p>
  
  <pre><code>var sensorInput = new { Latitude = 25, Longitude = 134 };
  Log.Debug("Processing {@SensorInput}", sensorInput);
  </code></pre>
  
  <p>should not result in something like:</p>
  
  <pre><code>var tmp = destructure(sensorInput);
  
  readonly bool _isDebug = Log.IsEnabled(LogEventLevel.Debug);
  if (_isDebug) Log.Debug("Processing {var1}", tmp);
  </code></pre>
  
  <p>I did check the Serilog source code but I haven't found anything which would confirm the above is not happening - perhaps someone knows the relevant code?</p>