2017-12-20 17 views
0

私はMiniProfiler.AspNetCoreをSerilog.AspNetCoreと連携させようとしています。そうでなければ、呼び出しをログに記録することができます。SerilogへのMiniProfiler 4ロギング(またはミドルウェア内のアクセス)を取得する方法は?

私は

private void EndInvoke(HttpContext context) 
if (MiniProfiler.Current != null) 
{ 
    Log.ForContext("MiniProfiler", JsonConvert.DeserializeObject<dynamic>(MiniProfiler.Current.ToJson())) 
     .Verbose("Completed request in {Timing} ms", MiniProfiler.Current.DurationMilliseconds); 
} 

を呼び出すEndInvokeとミドルウェアを作成しようとした私は、3.0ない4.0 MiniProfilerのバージョンと同様に、ASPNETないaspnetcoreで行われたhttps://daveaglick.com/posts/easy-performance-and-query-logging-in-aspnet-with-serilog-and-miniprofilerに似てそれを設定しようとしています。

編集:null問題を修正しました。私はミニプロファイアミドルウェアの前にミドルウェアを作成していましたが、まだserilog/seqに正しくログを記録していません。

答えて

0

問題の一部は、私は私のForContext()コール

private void EndInvoke(HttpContext context) 
{ 
    MiniProfiler.Current.Stop(); 
    if (MiniProfiler.Current != null) 
    { 
     Log.ForContext("MiniProfiler", JsonConvert.DeserializeObject<object>(MiniProfiler.Current.ToJson()), destructureObjects: true) 
      .Debug("Completed request in {Timing} ms", MiniProfiler.Current.DurationMilliseconds); 
    } 
} 

の端に

destructureObjects: trueがありませんでしたそして、主な理由は...私はへの送信から詳細な通話をフィルタリングしてあったように見えます私のseqサーバー...デバッグするために変更すると、すぐに表示されました。

この質問が他の誰かを助けるかもしれないことを願っていますが、これはMiniProfiler 4AspNetCore 2で動作します。 Destructurama.JsonNetが必要で、LoggerConfiguration().Destructure.JsonNetTypes()を追加してください。そうしないと、出力に空のアイテムが表示されます。

関連する問題