0

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

我使用了帮助文档中的 web.config 设置

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

我不想将阈值设置为致命的。我希望一个“无”或禁用=“真”

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

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

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

长久以来,这不是 100% 正确的。我们的系统正在向微服务发展,问题在于分散式日志记录是跟踪/可视化的噩梦。因此,我们将流跟踪、异常和有限跟踪移至集中式系统。

编程入口点(又名消息处理程序、Web API 端点等)几乎总是包含在每个处理程序上的 try catch 日志抛出中,这涵盖了我们所有的编程错误。这和平常没什么不同。集中记录位置集合了人们可能想要的所有漂亮的红色闪烁实时警报。

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

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

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

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

4

1 回答 1

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

于 2015-03-05T08:18:05.730 回答