2016-05-13 9 views
2

Мы имеем обслуживание с помощью метода Main(), который инициализирует наш serilog регистратор так:Добавить Enrich.WithProperty в 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")

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

ответ

3

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

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

+0

Спасибо за разъяснение – redwards510

0

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

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

} 

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

+0

Это правильный способ сделать то, что вам нужно с Serilog. Вы можете создавать регистраторы из существующих регистраторов, добавляя переменные контекста (один или несколько). –

 Смежные вопросы

  • Нет связанных вопросов^_^