Добавление промежуточного программного обеспечения или аналогичного в функции Azure v2 - PullRequest
2 голосов
/ 19 июня 2019

Мне нужно добавить correlationId в мой контекст ведения журнала, и я сделал это в своем проекте MVC, добавив в проект Nuget CorrelationId и настроив его промежуточное ПО, но я не смог сделать то же самое в функциях Azure.

Я загрузил ICorrelationContextAccessor с помощью внедрения зависимостей, а затем установил свой коэффициент корреляции следующим образом:

    [FunctionName("func1")]
    public async Task Run([ServiceBusTrigger("mytopic", "MySubscription", Connection = "ServiceBusConnectionString")]Message message)
    {
        _correlationContextAccessor.CorrelationContext = _correlationContextFactory.Create(message.CorrelationId, "X-Correlation-ID");
        _logger.LogInformation($"C# ServiceBus topic trigger function processed message: {message.MessageId}, {Encoding.UTF8.GetString(message.Body)}");

Он работает нормально, и я вижу мой correlationId в строке журнала ниже и в моих службах в функции. Единственная часть, которую я пропускаю, - это то, что у меня есть журналы, касающиеся начала и конца функции, у которой все еще нет correlationId, что имеет смысл, когда функция хочет регистрировать, что она получила сообщение, что correlationId не установлен.

1 Ответ

0 голосов
/ 02 июля 2019

Короткая версия заключается в том, что вы не можете изменить код регистрации, который запускается перед вашей функцией, используя встроенные привязки.

Вы не сможете изменить это первое "обработанное сообщение функции запуска таймера C # Timer"поскольку сообщение не было прочитано в тот момент - это было бы то же самое, что пытаться получить идентификатор корреляции, установленный в вашем проекте MVC, перед чтением входящего HTTP-запроса.

Вы можете добавить ведение журнала сразу после получения сообщения, создав настраиваемую привязку .Я бы посоветовал вам тщательно обдумать, стоит ли создавать и поддерживать пользовательскую привязку, чтобы ускорить настройку ведения журнала на несколько строк.

...