Пользовательские расширения Serilog в ASP. NET конвейере веб-API - PullRequest
0 голосов
/ 12 марта 2020

Когда выполняются пользовательские обогащатели Serilog во время конвейера Web API?

Я заметил, что метод publi c void Enrich (LogEvent logEvent, ILogEventPropertyFactory propertyFactory) вызывается один или два раза в зависимости от того, есть ли у меня событие журнала (т.е. , Log.Debug (), Log.Warning () et c.). Если у меня есть событие журнала, оно вызывается дважды - как при обработке запроса HTTP, так и при обработке ответа HTTP. Если у меня нет события журнала, оно вызывается только один раз, во время обработки ответа HTTP.

1 Ответ

0 голосов
/ 12 марта 2020

Serilog Enrichers запускаются каждый раз, когда делается вызов для записи события журнала в журнал (если включен тип журнала событий).

например,

Log.Information("hey1");
Log.Warning("hey2");
Log.Debug("hey3");

Будет записывать 3 записи событий в журнал, что приведет к тому, что все настроенные обогащатели будут вызываться 3 раза, по одному для каждого из событий, для обогащения каждого из них.

Конечно, если вы подключили Serilog к конвейер запросов ASP. NET, сообщения журнала ASP. NET будут пересылаться в Serilog, что также приведет к тому, что вызовы enricher будут вызываться каждый раз для каждой четной записи ...

...