У меня проблема с каротажем с 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, поэтому его не останавливает журнал так же, как заданные в очереди задания, пока запущенное задание не запускается через минуту и перемещает местоположение файла, а затем журнал очереди и запланированного задания на путь, определенный для запланированного задания.