我在Serilog 1.6.8。
中遇到了hangfire 2.3的日志记录问题我有一个排队的挂起工作,使用serilog记录,在一些随机数量的工作后,它将停止记录。我将重新排队这些作业,它会随机停止登录以前记录的其他作业。当它在随机点失败时。
我有一个使用serilog的预定工作,记录得很好。
使用nlog的hangfire日志中没有错误。
作业继续运行,结果正确。
我正在使用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会重用对象(我的ioc)并且每个作业都会记录到彼此的文件,因为它们都在hangfires应用程序域下运行,所以它并没有真正停止日志,就像排队的作业运行一样,直到预定的作业运行一分钟后,将文件位置,然后排队和预定的作业日志移动到为计划作业定义的路径。
答案 0 :(得分:2)
将作业移至nlog。我想只有一个文件可以使用,并且有很多不同的工作,我们将每个文件记录到不同的文件中。