Мой вопрос в том, что если я добавлю пользовательский ILoggerProvider и пользовательский ILogger, эта очередь все еще возникает, когда я вызываю logger.LogDebug ()?
Или это то, что мне нужно реализовать теперь, когда я создаю собственный журнал?
Если мы хотим реализовать пользовательский журнал и записывать журнал в какое-то хранилище данных, например SQL Db et c, что может вызвать проблемы с производительностью, если мы напрямую записываем каждое сообщение журнала в хранилище данных. Для повышения производительности, как вы упомянули, в некоторых системах ведения журналов сначала они записывают журналы в быстрое хранилище, а затем запускают фоновую задачу для выполнения асинхронной работы по записи сообщений журнала из быстрого хранилища в целевое хранилище данных.
Как пример сценария, упомянутого в разделе «Без асинхронных методов ведения журнала» , это do c:
Например, при входе на сервер SQL не Не делайте этого непосредственно в методе журнала, поскольку методы журнала синхронны. Вместо этого синхронно добавьте сообщения журнала в очередь в памяти и попросите фонового рабочего вытащить сообщения из очереди, чтобы выполнить асинхронную работу по отправке данных на SQL сервер.
Чтобы создать подобный настраиваемый регистратор путем реализации interface ILogger
, мы можем интегрировать и использовать очередь сообщений в качестве быстрого хранилища для первоначальной записи журналов с помощью специального кода logi c в методе Log
в зависимости от фактических требований *. 1023 *