Идентификатор корреляции для слушателя при использовании Serilog в ядре .Net - PullRequest
0 голосов
/ 24 января 2019

У меня консольное приложение ядра .net, которое слушает RabbitMQ.Также я использую Serilog для регистрации.API, который помещает сообщение в очередь, добавляет идентификатор корреляции в качестве одного параметра в сообщении.При записи логов я хочу, чтобы CorrelationID (как указано в шаблоне вывода конфигурации Serilog) был заменен на тот, который доступен в сообщении, для отслеживания операции от начала до конца.Кто-нибудь может предложить способ достижения этого?

Примечание. Если это веб-запрос, на помощь приходит промежуточное ПО, предоставляемое Serilog (Scoped Middleware или LogContext).Тем не менее, они требуют HttpContext (по понятным причинам).Для такого рода запросов слушателя я застрял, чтобы найти решение

Любая помощь очень ценится

1 Ответ

0 голосов
/ 24 января 2019

В момент, когда вы берете сообщение, вы должны иметь возможность

using (LogContext.PushProperty("corrId", msg.CorrId))
    ProcessMessage(msg)

Вы также можете добавить элемент ....|{Properties} в строку формата журнала , чтобы выбратьлюбые свойства, не используемые в шаблоне сообщения, связанные с данным сообщением (но, похоже, вы это уже рассмотрели)

...