Журнал событий Hangfire, используя существующий Serilog
Я новичок в Hangfire, и я пытаюсь настроить способ записи событий, используя мой существующий регистратор serilog в веб-API asp.net. Вот мой класс логгера:
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?
1 ответ
Возможно, что Hangfire инициализирует и кэширует свой собственный внутренний регистратор CreateLog()
вызывается приложением.
Чтобы проверить эту теорию, попробуйте переместить код, который инициализирует Log.Logger
в самом начале кода запуска приложения, например, в Global.Application_Start()
или похожие.
В Hangfire 1.6.19 (а может и раньше я не проверял) добавление пакета NuGet в ваш проект дает вам метод расширения на IGlobalConfiguration
:
configuration.UseSerilogLogProvider();