I'm using Serilog with an MS SQL Server sink in my application. Let's assume I have defined the following class ...
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
// ... more properties
}
... and created an instance:
var person = new Person
{
FirstName = "John",
LastName = "Doe",
BirthDate = DateTime.UtcNow.AddYears(-25)
};
I have placed the following log call in my code:
Log.Information("New user: {FirstName:l} {LastName:l}",
person.FirstName, person.LastName);
Is it possible to also log the BirthDate
property without adding it to the message template so that it's rendered within the Properties
XML column? I'd like to output it later in a details view of my application's log viewer.
I'm basically looking for a behavior similar to the object destructuring, but without printing the flat object as part of the log message.
This is as simple as:
Log.ForContext("BirthDate", person.BirthDate)
.Information("New user: {FirstName:l} {LastName:l}",
person.FirstName, person.LastName);