после ожидания следующего, когда я пытаюсь использовать serilog LogContext, он не помещает никаких свойств в журнал сообщений
Устанавливая все для Serilog и SEQ, я застрял в проблеме, на которую у вас может быть ответ. Я пытаюсь добавить некоторые свойства во все журналы с помощью LogContext.PushProperty. Однако в моем промежуточном программном обеспечении (см. Изображение ниже) LogContext может помещать свойство в журналы до того, как await next.Invoke(). Хотя после await next, когда я пытаюсь использовать LogContext, он не помещает никаких свойств в журнал сообщений. Проблема в том, что утверждения всегда пусты перед await next.Invoke(), и они имеют значения только после await next, поэтому я вынужден использовать LogContext после await, но он там не работает, как упоминалось. Посоветуйте, пожалуйста, в разгадке?
Спасибо,
1 ответ
LogContext
необходимо использовать вместе с using
блок, охватывающий всю область, в которой вы хотите, чтобы свойство было доступно. Вам может понадобиться что-то вроде:
IDisposable popContext = null;
var user2 = context.User as IAMClaimsUser;
if (user2 != null && !string.IsNullOrEmpty(user2.FirstName))
{
popContext = LogContext.PushProperty("UserEmail", user2.Email);
}
using (popContext)
{
// `UserEmail` will be attached to events logged in this block
await next();
}