Nservicebus отключить регистратор по умолчанию в web.config
Я использую DefaultFactory LogManager для Nservicebus v5. Я доволен этим, но надеялся, что смогу отключить через web.config.
Я использую настройки web.config, которые можно найти в справочной документации
<configSections>
<section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
</configSections>
<Logging Threshold="Debug" />
Я бы предпочел не устанавливать порог как смертельный. Я надеялся на "None" или Disabled="true"
Также можно указать путь к каталогу web.config?
Обновление: почему мы хотим игнорировать ошибки?
Суть в том, что у нас нет прав на запись на серверах.
В общем, это не на 100% верно. Наши системы движутся в сторону микросервисов, проблема в том, что децентрализованное ведение журналов - это кошмар трассировки / визуализации. Поэтому мы перенесли отслеживание потоков, исключения и ограниченное отслеживание в централизованную систему.
Точки входа в программирование (так называемые обработчики сообщений, конечные точки веб-API и т. Д.) Почти всегда заключаются в бросок try catch для каждого обработчика, который охватывает все наши ошибки программирования. Это не что-то действительно отличное от нормального. Централизованные локации регистрируют все мигающие красные сигналы тревоги в реальном времени, которые можно пожелать.
В результате остаются только ошибки типа конфигурации, такие как отсутствующие очереди, неправильные привязки сборки, неисправные файлы конфигурации или другие вещи в стиле времени выполнения, такие как разводка IoC (вне кода обработчика). Благодаря централизованному ведению журнала и мониторингу квестов с ошибками довольно легко определить, когда служба не работает, и если это так, мы включаем ведение журнала, перезапускаем, пробуем неисправную проблему и исправляем. Гарантированная доставка позаботится обо всем остальном, как только он снова включится:D Прошли времена 150 миллионов файлов журнала, распределенных по 10 различным серверам.
Простота DefaultFactory была хорошей, так как не требовался другой пакет nuget и связанная с ним конфигурация.
Это правильный путь вперед. Многие утверждают, что нет. Могли бы мы сделать это лучше? Да, мы могли бы реализовать общий интерфейс логгера и передать его в NServiceBus, но мы пока не успокоились и победа не критична.
Примечание: одна очень хорошая вещь в том, как мы регистрируем, - это то, что в нашем инструменте backoffice мы смогли просто показать поток для каждого "заказа", подобно использованию идентификатора корреляции в greylog.
1 ответ
Поскольку это не считалось вероятным сценарием, у него нет API первого класса. Но вы можете достичь этого, передав нулевой логгер из любой распространенной библиотеки логирования (NLog, Log4net, CommonLogging). Я предполагаю, что вы используете один из них на вашем сайте.
Так что возьмите NLog для примера.
Install-Package NServiceBus.NLog
В вашем webconfig
<appSettings>
<add key="disableLogging" value="true"/>
</appSettings>
Тогда в вашем глобальном стартапе
if (ConfigurationManager.AppSettings.Get("disableLogging") == "true")
{
LoggingConfiguration config = new LoggingConfiguration();
LogManager.Configuration = config;
NServiceBus.Logging.LogManager.Use<NLogFactory>();
}
Это использует подход, описанный здесь http://docs.particular.net/nservicebus/logging-in-nservicebus