我正在尝试使用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)。
删除第二个调用,日志应该开始工作。
另一种选择是配置全局记录器:
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();
}
第二个调用“x.UseSerilog()”重置TopShelf的HostLogger以使用您尚未配置的Serilog的全局实例(Log.Logger)。
删除第二个调用,日志应该开始工作。
另一种选择是配置全局记录器:
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();
}