【发布时间】:2016-09-20 08:27:15
【问题描述】:
我是 hangfire 的新手,我正在尝试设置一种方法来使用我现有的 serilog 记录器在 asp.net web api 中记录事件。这是我的记录器类:
public static class LoggerInitializer
{
private static ILogger CreateLog()
{
var settings = Settings.Instance;
Log.Logger = new LoggerConfiguration().
MinimumLevel.Debug().
WriteTo.RollingFile(settings.LoggerDebugDirectory +"Debug-{Date}.txt", restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}").
WriteTo.RollingFile(settings.LoggerVerboseDirectory + "Debug-{Date}.txt").
CreateLogger();
return Log.Logger;
}
static ILogger _logger;
public static ILogger GetLogger()
{
if (_logger != null)
return _logger;
return _logger = CreateLog();
}
}
在我的启动文件中,我添加了 hangfire 文档中的代码:
GlobalConfiguration.Configuration
.UseSqlServerStorage(Settings.Instance.NLSContextConnectionString);
app.UseHangfireDashboard();
app.UseHangfireServer();
我的hangfire 完美运行,但我如何启用让hangfire 使用我的serilog?
【问题讨论】:
-
根据documentation,Hangfire 自动支持登录到 Serilog。这不适合你吗?
-
不,可悲的是,它不是。我发现文档真的很缺乏。
-
与您的问题无关,但在应用程序退出时缺少
Log.CloseAndFlush()调用会导致问题(除非您的代码示例中简单地省略了它)。干杯!