Добавьте Enrich.WithProperty в глобальный регистратор serilog после первоначальной настройки.

У нас есть сервис с методом Main(), который инициализирует наш регистратор serilog следующим образом:

            Log.Logger = new LoggerConfiguration()
               .MinimumLevel.Debug()
               .WriteTo.ColoredConsole()
               .WriteTo.Seq(ConfigurationManager.AppSettings["SeqServer"], apiKey: ConfigurationManager.AppSettings["SeqApiKey"])
               .Enrich.WithProperty("ServiceName", "SomeConsumer")                   
               .CreateLogger(); 

Теперь другим способом я хочу прикрепить к этому регистратору дополнительное свойство. Я хочу добавить .Enrich.WithProperty, потому что мне нравится стиль ведения журнала Log.Error("Somelog")

Как я могу это сделать? Я просто хочу прикрепить новое свойство с некоторой строкой.


person redwards510    schedule 13.05.2016    source источник


Ответы (2)


После метода CreateLogger вы не можете изменить созданный экземпляр регистратора. Если определенный метод или класс хочет обогатить журнал дополнительными переменными только в этом конкретном контексте, то ForContext — это то, что нужно.

Альтернативой может быть создание динамического пользовательского обогащения, которое вы настраиваете в начале, но это изменит его поведение в зависимости от некоторой логики.

person C. Augusto Proiete    schedule 13.05.2016
comment
Спасибо за разъяснения - person redwards510; 14.05.2016

Я только что попробовал это, и я полагаю, что это будет делать:

SomeMethod() {
    var log = Log.Logger.ForContext("PropertyName", "Some string I need so bad");
    log.Debug("Beginning of log with enrichment");

}

Таким образом, я могу избежать блока using, но мне все еще любопытно, есть ли способ изменить глобальный объект Log.Logger.

person redwards510    schedule 13.05.2016
comment
Это правильный способ делать то, что вам нужно с Serilog. Вы можете создавать логгеры из существующих логгеров, добавляя контекстные переменные (одну или несколько). - person C. Augusto Proiete; 13.05.2016
comment
это показывает мне этот журнал [19:58:05 INF] ( ) Beginning of log with enrichment. В какой части я вижу значение PropertyName? - person JRichardsz; 07.07.2021