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