2016-02-27 16 views
6

Integruję Serilog z istniejącą wielowarstwową warstwą i rozwiązaniem do wielu zespołów, które utworzyłem. Poprzednia technika logowania, którą stosowałem, polegała na tym, że po prostu przekazywałem łańcuch warstwami zdarzeń. Chciałbym uciec od tego.Jeden rejestrator do rozwiązania wielozadaniowego

Przeczytałem, że mogę użyć pliku app.config do załadowania konfiguracji rejestratora do każdej klasy w mojej bibliotece, ale jak mogę to zrobić w projekcie wielozespołu.

Mam projekt na najwyższym poziomie/startup i dwa projekty biblioteki klas. Chciałbym użyć tego samego rejestratora z dwoma zlewami dla całego programu.

Są to teksty znalazłem dotąd

https://github.com/serilog/serilog/wiki/AppSettings

http://nblumhardt.com/2014/04/xml-configuration-for-serilog/

Może ktoś wyjaśnić, jak to osiągnąć?

Odpowiedz

5

Serilog umożliwia korzystanie z konfiguracji rejestratora dla każdego programu; choć możliwe jest skorygowanie rejestrowania klasy po klasie, zwykle odbywa się to po fakcie z filtrowaniem i tak dalej.

Zalecane podejście jest:

Konfigurowanie Serilog jako pierwszą rzeczą w Program.Main() lub gdziekolwiek punkt wejścia z aplikacji jest:

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Sink1() 
    .WriteTo.Sink2() 
    .CreateLogger(); 

Wskazówka ta konfiguruje statycznego Log klasę. W innym miejscu Twojej aplikacji możesz teraz napisać:

Log.Information("This is a message"); 

, a wiadomość zostanie przekazana do obu zlewów. Możesz uniknąć statycznego Log i zamiast tego przepuścić ILogger wokół, ale jeśli nie masz tutaj silnych preferencji, opcja statyczna to mniej kłopotów.

Konfiguracja XML/appSettings nic z tego nie zmienia. To po prostu porusza kilka szczegółów do pliku konfiguracyjnego, więc zmieniając pierwszy blok kodu:

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.AppSettings() 
    .CreateLogger(); 

I dodaje:

<add key="serilog:write-to:Sink1" /> 
<add key="serilog:write-to:Sink2" /> 

do App.config będzie miał ten sam efekt. Konfiguracja kodu jest często mniej kłopotów (mniej części ruchomych), jeśli można uniknąć XML.