title: How to add my own properties to Serilog output template
body: <p>I have a small application that is receiving messages from a service bus, which can send through several different types of events for different users. Based on the type of event, a different function is called. I'm logging information in each of these functions.</p>
  
  <p>I currently have this:</p>
  
  <pre><code>var logger = new LoggerConfiguration()
      .MinimumLevel.Information()
      .WriteTo.Console(outputTemplate:
          "[{Timestamp:HH:mm:ss} {Level:u3}] {Message}{NewLine}{Exception}")
      .WriteTo.Loggly()
      .CreateLogger();
  
  ...
  
  // logging an event
  Log.Information("{UserId} {Event} - Here is my message", "123", "Test Event");
  </code></pre>
  
  <p>That works fine, but since for this application, every single log will contain both the UserId and Event data in the logs, I figured I could add them to my output template to make my logging code a little cleaner. So I've tried this:</p>
  
  <pre><code>var logger = new LoggerConfiguration()
      .MinimumLevel.Information()
      .WriteTo.Console(outputTemplate:
        "[{Timestamp:HH:mm:ss} {Level:u3}] {UserId} {Event} - {Message}{NewLine}{Exception}")
      .WriteTo.Loggly()
      .CreateLogger();
  
  ...
  
  // logging an event
  Log.Information("Here is my message", "123", "Test Event");
  Log.Information("Here is my message", new { UserId = "123", Event = "Test Event"});
  </code></pre>
  
  <p>Neither of those work though, all it outputs is my message, it doesn't pass through the UserId or Event that I passed into it.</p>
  
  <p>Am I doing this wrong? Or is there even a way to do it at all?</p>