Serilog PushProperty с дополнительными свойствамиC#

Место общения программистов C#
Ответить
Anonymous
 Serilog PushProperty с дополнительными свойствами

Сообщение Anonymous »

Фрагмент кода ниже:

Код: Выделить всё

Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Verbose()
.WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss} [{Level:u3}] {Message}{NewLine}{Exception}")
.CreateLogger();

using (var _ = LogContext.PushProperty("Test", "world"))
{
Log.Debug("Hello [{Test}]");
Log.Debug("Hello [{Test}] {Second}.", 1);
}
Выдает следующий результат:

Код: Выделить всё

15:32:32 [DBG] Hello ["world"]
15:32:32 [DBG] Hello [1] {Second}.
Хотя я ожидал, что это даст:

Код: Выделить всё

15:32:32 [DBG] Hello ["world"]
15:32:32 [DBG] Hello ["world"] 1.
На основании этого может показаться, что значения PushProperty передаются только если в операторе журнала не указаны другие значения свойств.
Есть ли способ заставить это производить ожидаемый мной вывод журнала? например, с другой конфигурацией регистратора или определением журнала? Я пытался поиграть с обогащением, но, похоже, его невозможно настроить дальше.
Причина, по которой я этого хочу: у меня есть функции, которые вызываются там, где я знаю, что будет установлено свойство push (например, флаг {Id}), но я не передаю это свойство в стек вызовов (ну, я надеюсь избежать его передачи в стек вызовов исключительно для целей ведения журнала).

Подробнее здесь: https://stackoverflow.com/questions/798 ... properties
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»