2014-11-24 5 views
1

В настоящее время я использую Hangfire для запуска некоторых заданий в службе Windows. Работы запускаются из WebAPI.Вход в NLog в Hangfire.io

В настоящее время моя система работает нормально, когда все задания успешны, но я не получаю регистрацию, когда происходят исключения. Кто-нибудь получил какой-либо опыт использования настраиваемого регистратора для получения сообщений от Hangfire?

Мой регистратор является основным интерфейсом NLog:

public class Logger : ILogger 
{ 
    public readonly NLog.Logger logger; 

    public Logger(string name) 
    { 
     if (LogManager.Configuration == null) 
     { 
      FallbackInitialisation(); 
     } 

     logger = LogManager.GetLogger(name); 
    } 

    public Trace(string message) 
    //etc. 
} 

Я настройка моего сервера заданий замедленного воспламенения в моей службе окон так:

SqlServerStorage storage = new SqlServerStorage("myConnectionString"); 
BackgroundJobServerOptions options = new BackgroundJobServerOptions(); 
m_server = new BackgroundJobServer(options, storage); 
GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 0 }); 

Основываясь на hangfire documentation, я просто попытался после него добавив требуемые ссылки и добавив следующее после настройки сервера заданий, однако все еще не было обработано журналов:

var properties = new NameValueCollection(); 
properties["configType"] = "INLINE"; 
LogManager.Adapter = new NLogLoggerFactoryAdapter(properties); 

Я просто имитирую исключение throw new Exception() в методе, вызванном заданием. Задание создаются при вызове WebAPI так:

[HttpGet] 
public void TestStartJob() 
{ 
    m_logger.Trace("TestStartJob"); 
    BackgroundJob.Enqueue(() => m_service.TestStartJob()); 
} 

Что я ищу, то, если кто имеет опыт в получении лесозаготовок правильно настроено для использования с замедленным воспламенением.

+0

замедленного воспламенение регистрирует все исключения в таблице HangFire.State. Вы уверены, что вам нужно больше журналов? –

+0

@KirillBestemyanov Да, я знаю, что это существует, и я вижу исключения в веб-интерфейсе hangfire, но я хотел бы иметь возможность видеть исключения в наших собственных журналах, чтобы их можно было обнаружить как через веб-приложение, так и путем регистрации, когда что-то падает над – Thewads

+0

Если 'AutomaticRetryAttribute' не создает никаких журналов на исключении, мне кажется, что ведение журнала работает не полностью. Можете ли вы сказать мне, какие версии Common.Logging вы используете и какой пакет и версия используете для Common.Logging адаптера NLog? – odinserj

ответ

0

мне удалось решить эту проблему с помощью следующих версий NuGet пакетов:

NLog - 3.1 
Common.Logging - 2.2.0 
JVW.Logging.CommonLoggingNLogAdapter - 1.0.0.1 

, а затем настройки протоколирования как такового

var properties = new NameValueCollection(); 
properties["configType"] = "INLINE"; 
Common.Logging.LogManager.Adapter = new NLogFactoryAdapter(properties);