【问题标题】:Serilog 2.3 and HangfireSerilog 2.3 和 Hangfire
【发布时间】:2017-06-05 17:42:33
【问题描述】:

我在hangfire 1.6.8 中遇到Serilog 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);
        }

    }


卫生署! 我现在看到它是 Serilog 的某种静态问题。由于它是静态的,hangfire 重用对象(我的 ioc)并且每个作业都记录到彼此的文件,因为它都在 hangfires 应用程序域下运行,所以它并没有像排队作业那样真正停止日志,直到计划的作业运行分钟后移动文件位置,然后将排队和计划的作业日志移动到为计划的作业定义的路径。



【问题讨论】:

    标签: hangfire serilog


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多