2017-11-08 1 views
1

私は、ASP.Net Core 2.0でSerilogを使用しており、JsonFormatterを使用してRollingFileに書き込みます。設定手順は以下のとおりです:https://github.com/serilog/serilog-aspnetcore。すべてが素晴らしい作品が、すべてのログエントリに私はログインしていなかった以下のプロパティを取得:RequestId ASP.Net Coreのログエントリからプロパティを削除する方法

    • SourceContextを
    • RequestPath

    私は、彼らがASPによって追加されていると推定.Netコアロギングフレームワーク。どうすればそれらを取り除くことができますか?

  • 答えて

    1

    これは、ロギングパイプラインにenricherを差し込むことによって達成することができます。

    .Enrich.With(new RemovePropertiesEnricher()) 
    

    class RemovePropertiesEnricher : ILogEventEnricher 
    { 
        public void Enrich(LogEvent le, ILogEventPropertyFactory lepf) 
        { 
         le.RemovePropertyIfPresent("SourceContext"); 
         le.RemovePropertyIfPresent("RequestId"); 
         le.RemovePropertyIfPresent("RequestPath"); 
        } 
    } 
    
    +1

    ありがとうございましたニコラスこれは働いた! – Andrew

    1

    はい、あなたはそれらを取り除くことができます。

    _loggerConfiguration.WriteTo.Console(LogLevel.Debug, "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}"); 
    

    このシナリオでは、出力に記載されているプロパティは表示されません。

    +0

    おかげでレオニード、コンソールへの私のログが正常に動作します。あなたの例のように、私はそこにこれらのパラメータを含んでいないメッセージテンプレートを持っています。ファイルへのロギング時にそれらを取り除く方法:.WriteTo.RollingFile(new JsonFormatter()、logFilePath、LogEventLevel.Information)?私はここでテンプレートを提供したくない、生のjsonをログに記録したいだけです。 – Andrew

    +1

    現在、この機能はサポートされていません(ソースコードを確認しました)。私は回避策を見て、あなたはJSONファイルを形成するテンプレートの種類を使用することができます。または、この機能を実装して、リポジトリにプルリクエストを作成することもできます。 – Leonid

    関連する問題