2015-01-11 17 views
10

Używam Serilog z zlewem MS SQL Server w mojej aplikacji. Załóżmy, że zostały zdefiniowane następujące klasy ...Dodaj właściwości niestandardowe do Serilog

public class Person 
{ 
  public string FirstName { get; set; } 
  public string LastName { get; set; } 

  public DateTime BirthDate { get; set; } 
  // ... more properties 
} 

... i stworzył instancję:

var person = new Person 
{ 
    FirstName = "John", 
    LastName = "Doe", 
    BirthDate = DateTime.UtcNow.AddYears(-25) 
}; 

umieściłem następujące połączenia dziennika w moim kodu:

Log.Information("New user: {FirstName:l} {LastName:l}", 
    person.FirstName, person.LastName); 

Czy możliwe jest również zarejestrowanie właściwości BirthDate właściwości bez dodawania jej do szablonu wiadomości, aby była renderowana w ramach XM Properties L kolumna? Chciałbym wydrukować go później w widoku szczegółów przeglądarki dziennika mojej aplikacji.

Po prostu szukam zachowania podobnego do destruktury obiektu, ale bez drukowania płaskiego obiektu jako części komunikatu dziennika.

Odpowiedz

12

To jest tak proste, jak:

Log.ForContext("BirthDate", person.BirthDate) 
    .Information("New user: {FirstName:l} {LastName:l}", 
          person.FirstName, person.LastName); 
+0

widzę, że to całkiem proste. Czy ta metoda pozwala również na destrukturyzację obiektów o złożonym typie (takich jak właściwość * Father * typu "Person")? Bardziej interesują mnie wartości właściwości niż "ToString()". –

+5

Absolutnie - 'Log.ForContext (" Ojciec ", ojciec, destructureObjects: true)' robi to. –

+0

Idealny! Dokładnie to, czego szukałem. Przeczytałem instrukcję, ale musiałem jakoś to przeoczyć. Dziękuję Ci! –

Powiązane problemy