首页 文章

Serilog 2.3和Hangfire

提问于
浏览
2

我在hangfire 1.6.8内有Serilog 2.3的日志问题 .

我有一个排队的hangfire工作,使用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 app域下运行,所以它并没有真正停止日志,就像排队的作业运行一样,直到预定的作业运行一个一分钟后,将文件位置,然后排队和预定的作业日志移动到为计划作业定义的路径 .



1 回答

  • 1

    将作业移至nlog . 我想只有一个文件可以使用,并且有很多不同的工作,我们将每个文件记录到不同的文件中 .

相关问题