我有一个运行 TopShelf 的小型控制台应用程序,并使用 Serilog 作为我想在其中运行 OWIN 的日志记录工具。但是,一旦我启动应用程序构建器,每条日志消息都会通过跟踪侦听器复制,因此会在控制台上打印两次。
// serilog sink configuration
new LoggerConfiguration()
.WriteTo.Trace()
...
.CreateLogger();
// topshelf
HostLogger.UseLogger(new SerilogLogWriterFactory.SerilogHostLoggerConfigurator());
在我启动虚拟主机之前,我已经在这里找到了这个答案并包含了以下内容:
webHostOptions.Settings.Add(typeof (ITraceOutputFactory).FullName,
typeof (WebAppBuilder.NullTraceOutputFactory).AssemblyQualifiedName);
Trace.Listeners.Remove("HostingTraceListener");
有趣的是:当我在插入这些行后第一次启动应用程序时,它起作用了(例如,双重消息消失了。)。然而,在我清理了我的\bin
目录之后,它们又开始出现了。做什么?
请查看我刚刚制作的这张高度专业的图纸,它应该可以进一步解释这个问题: