2017-08-25 10 views
2

私は5つの.netコアプロジェクト、1つのコンソールアプリケーション、残りはクラスライブラリです。主な機能のクラスのプログラムでは私が持っている:私のすべてのクラスでSerilogはファイルにログを書きません

 Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .WriteTo.LiterateConsole() 
      .WriteTo.Async(a => a.RollingFile("logs\\myapp-{Date}.txt", 
       outputTemplate : "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level} {Type}] {Message}{NewLine}{Exception} {SourceContext}")) 
      .CreateLogger(); 

     Log.Information("Server starting ..."); 

      //Here I have class which invoke a lot of(6-7) Tasks 
       NewTask task = new NewTask(); 
       task.Start(); 
      //And I end my Main function with 
     Log.CloseAndFlush(); 
     Console.ReadLine(); 

を私が書いた例外をキャッチするとき:新しいログで

 catch(Exception e) 
     { 
      Log.ForContext<ClassName>().Error(e, "Somethign went wrong"); 
     } 

を、私は唯一の「サーバー開始...」何を持っていますもっと。私は何をすべきか?私がデバッグしている間、私のプログラムはcatchの行を実行しています。今私は何をすべきか分かりません。多分誰かが似た問題を抱えていますか

EDIT 私はここhttps://github.com/serilog/serilog/wiki/Getting-Started

答えて

2

すべてのタスクが完了したら、Log.CloseAndFlush()に電話する必要があります。 Console.ReadLine()コールの後に配置すると、これを実証する必要があります。

+0

Omg、ありがとうございます。読んだりするとプログラムが止まってしまうのですが、なんとなく動作します。 – nju

+0

嬉しいです。 –

2

からモデル化あなたのLoggerFactoryにSerilogを追加していますか?

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime) 
{ 
    loggerFactory.AddSerilog(); 
} 
+0

あなたが知っていることは、.net-coreはaspではないということですか? – nju

+0

良い点、もう少しコードを表示できますか?私はSerilogの例を試したところ、うまく動作します。 – Dani

+0

私はできません:(私のEDITセクションで見ることができますが、私にも当てはまる例を貼り付けました。もちろん、1つのプロジェクトで簡単な解決策になります。 – nju

関連する問題