Hangfire не регистрирует исключение, используя настроенный Logger - PullRequest
0 голосов
/ 08 мая 2018

Согласно документации Hangfire

Начиная с Hangfire 1.3.0, вам не нужно ничего делать, если Ваше приложение уже использует одну из следующих библиотек через отражение (так что сам Hangfire не зависит ни от одного из их). Реализация ведения журнала автоматически выбирается путем проверки наличие соответствующих типов в порядке, указанном ниже.

Serilog
NLog
Log4Net
EntLib
Вход
Лупа
Эльма

У меня есть приложение ASP.NET Core 2.0, которое использует Serilog, как показано ниже

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseApplicationInsights()
        .UseUrls("http://*:40006")
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
           // removed for bravity
        })
        .ConfigureLogging((hostingContext, logging) =>
        {                
                Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(hostingContext.Configuration)
                .CreateLogger();

                logging.AddSerilog();

        })
        .Build();
}

Приложение настроено на использование Hangfire. Во время обработки фоновых заданий, если возникает какое-либо исключение, Hangfire повторяет задание 10 раз с увеличением задержки, как и ожидалось, и показывает исключения на панели мониторинга.

Выпуск
Панель мониторинга Hangfire показывает исключение в пользовательском интерфейсе, но не регистрирует исключение в настроенном приемнике Serilog.

Примечание. На панели мониторинга Hangfire отображается исключение, но оно форматирует исключение см. Здесь , в котором скрыта важная информация об исключении. Я думаю, что, если это регистрирует исключение, регистратор Serilog регистрирует полное исключение.

...