2017-01-20 5 views
2

У меня проблема с каротажем с Serilog 2.3 внутри hangfire 1.6.8.Serilog 2.3 and Hangfire

У меня есть задание на обложку, в котором используется serilog для регистрации, и после некоторого случайного числа заданий он прекратит ведение журнала. Я буду переупорядочивать эти задания, и он будет случайно останавливать ведение журнала на другом задании, которое ранее регистрировалось. Когда это происходит в случайных точках.

У меня есть запланированная работа с использованием serilog, которая работает только отлично.

Ошибки в журнале hangfire, использующем nlog, отсутствуют.

Работы продолжают работать, и результаты верны.

Я использую раковину appsettingsconfig.

Log.Logger = new LoggerConfiguration() 
      .ReadFrom.AppSettings(settingPrefix: "MyJob") 
      .CreateLogger(); 

Я понятия не имею, что делать или где искать.

Я думаю, что hangfire создает объект и каждый раз, когда задание называется вызовом метода на моем объекте. Есть ли какая-то нечетная проблема асинхронности, с которой я должен работать с serilog?

Пожалуйста, помогите!

Я создал новое задание, которое работает только с журналами и имеет то же самое поведение.

public class Logging 
    { 
     public Logging() 
     { 
      // Configure logging sinks 
      Log.Logger = new LoggerConfiguration() 
       .ReadFrom.AppSettings(settingPrefix: "LoggingTest") 
       .CreateLogger().ForContext<Logging>(); 


     } 
     public void LogSomething(string something) 
     { 
      Log.Information("Log: {0}", something); 
     } 

    } 


DOH! Теперь я вижу, что это своего рода статическая проблема с Serilog. Поскольку он является статическим, hangfire повторно использует объекты (my ioc), и каждое задание регистрируется в файлах других пользователей, поскольку оно выполняется под доменом приложений hangfires, поэтому его не останавливает журнал так же, как заданные в очереди задания, пока запущенное задание не запускается через минуту и ​​перемещает местоположение файла, а затем журнал очереди и запланированного задания на путь, определенный для запланированного задания.



ответ

1

покрутил работу NLog. Я предполагаю, что можно использовать только один файл и с множеством разных заданий, мы регистрируем каждый файл в другом файле.