我是hangfire的新手,我试图在asp.net web api中使用我现有的serilog记录器设置记录事件的方法。这是我的记录器类:
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();
我的篝火效果很好,但是如何让make hangfire使用我的serilog?
答案 0 :(得分:2)
在应用程序调用 CreateLog()
之前,Hangfire可能正在初始化并缓存自己的内部记录器。
要测试此理论,请尝试将初始化Log.Logger
的代码移动到应用启动代码的最开头,例如:在Global.Application_Start()
或类似。
答案 1 :(得分:0)
在Hangfire 1.6.19中(也许在那之前,我没有检查过)将NuGet软件包添加到您的项目中可以为您提供IGlobalConfiguration
上的扩展方法:
configuration.UseSerilogLogProvider();