我使用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。
答案 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