我正在尝试使用Topshelf和Serilog(分别为Serilog.Extras.Topshelf包)为Windows服务设置简单的日志记录配置。
HostLogger.UseLogger(new SerilogHostLoggerConfigurator(new LoggerConfiguration()
.WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
.WriteTo.ColoredConsole()
.MinimumLevel.Debug()
.CreateLogger()));
HostFactory.Run(x => {
x.UseSerilog();
...
该服务运行良好,但是没有输出到控制台或指定的日志文件(我看到正在创建一个,但它仍然为空)。有没有人使用过这两种框架?
最佳答案
第二个调用“x.UseSerilog()”将TopShelf的HostLogger重置为使用Serilog的全局实例(Log.Logger),您尚未配置它。
删除第二个 call ,日志记录应开始工作。
另一个选择是配置全局记录器:
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
.WriteTo.ColoredConsole()
.MinimumLevel.Debug()
.CreateLogger();
HostFactory.Run(x => {
// configure TopShelf to use Serilog's global instance.
x.UseSerilog();
}
关于c# - Serilog Topshelf集成无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28299003/