Nservicebus禁用web.config中的默认记录器

时间:2015-03-04 09:36:00

标签: nservicebus nservicebus5

我使用Nservicebus v5的DefaultFactory LogManager。我对此很满意,但希望能够通过web.config禁用。

我使用web.config设置,如帮助文档

中所示
<configSections>
    <section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
</configSections>
<Logging Threshold="Debug" />

我不希望将阈值设置为致命。我希望有一个&#34;无&#34;或已禁用=&#34; true&#34;

目录路径也可以设置为web.config吗?

更新:我们为什么要忽略错误?

简而言之,我们并没有真正拥有服务器的写权限。

长期以来,这并非100%真实。 我们的系统正朝着微服务的方向发展,问题在于分散式日志记录是一种追踪/可视化的噩梦。 因此,我们将流跟踪,异常和有限跟踪移至集中式系统。

编程入口点(又名消息处理程序,web api端点等)几乎总是包含在每个处理程序的try catch日志中,这涵盖了我们所有的编程错误。这与正常情况完全不同。 集中式日志记录位置设置了所有可能希望的红色闪烁实时警报。

只留下配置类型错误,如缺少队列,错误的程序集绑定,错误的配置文件或更多运行时样式的东西,如IoC布线(处理程序代码之外)。 通过集中记录和监视错误任务,可以很容易地检测到服务何时中断,如果是,那么我们打开日志记录,重新启动,尝试错误的问题并修复。 一旦重新启动,保证交付将处理所有其他事项:D 150个日志文件遍布10个不同服务器的日子已经过去了。

DefaultFactory的简单性很好,因为不需要另一个nuget包和相关配置。

这是正确的前进方式吗?许多人会争辩说不。 我们能做得更好吗?是的,我们可以实现常见的记录器接口并将其传递给NServiceBus,但我们现在还没有安静,胜利并不是关键时刻。

附注:关于我们记录方式的一个非常好的事情是,在我们的后台工具中,我们能够简单地显示每个&#34; order&#34;的流程,类似于使用相关ID greylog。

1 个答案:

答案 0 :(得分: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#nlog