2017-01-20 6 views
2

Serilog 2.3のログの問題があります。hangfire 1.6.8です。Serilog 2.3とHangfire

私は、ログにserilogを使用するエンキューされたハングファイアジョブを持っており、いくつかの乱数の後にログを停止します。私はそれらのジョブを待ち行列に入れ、以前に記録した別のジョブのログをランダムに停止します。それが無作為な点で失敗するとき。

私は、うまくログを記録するserilogを使ってスケジュールされた仕事をしています。

nlogを使用しているhangfireログにはエラーはありません。

ジョブは引き続き実行され、結果は正しいです。

私はappsettingsconfigシンクを使用しています。

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

私は何をすべきか、どこから見ていいのかわかりません。

私はハングファイアがオブジェクトを作成し、ジョブが呼び出されるたびに自分のオブジェクトのメソッドを呼び出すと思います。私は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)を再利用し、各ジョブはハングファイアのアプリドメインの下で実行されるため、それぞれのファイルはそれぞれのファイルにロギングされるため、スケジュールされたジョブが実行されるまでファイルの場所、次にエンキューされたジョブ・ログとスケジュールされたジョブ・ログの両方を、スケジュールされたジョブ用に定義されたパスに移動します。



答えて

1

nlogするジョブを移動しました。私は、1つのファイルしか使用できないと思いますし、さまざまなジョブがたくさんあると、それぞれを別のファイルに記録します。