使用现有的serilog记录hangfire事件

Jon*_*sen 5 serilog hangfire

我是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的启动文件中添加hangfire文档中的代码:

GlobalConfiguration.Configuration
            .UseSqlServerStorage(Settings.Instance.NLSContextConnectionString);

        app.UseHangfireDashboard();
        app.UseHangfireServer();
Run Code Online (Sandbox Code Playgroud)

我的Hangfire运作良好,但是如何启用hangfire使用我的serilog?

Nic*_*rdt 2

Hangfire 可能会在应用程序调用之前初始化并缓存其自己的内部记录器。 CreateLog()

要测试这个理论,请尝试将初始化的代码Log.Logger移至应用程序启动代码的最开头,例如 inGlobal.Application_Start()或类似的代码。