2017-07-07 5 views
3

私は、.NET Coreロギングのカテゴリに基づいてログファイルをフィルタリングするにはどうすればよいですか?

loggerFactory 
    .AddConsole() 
    .AddDebug() 
    .AddFile("Logs/trace-{Date}.txt"); 

と私のコンストラクタで、私は、例えば上の依存関係を取るように私のロガーファクトリを設定しましたILogger<MyServiceClass>。このフレームワークでは、サービスクラスのロガーインスタンスが作成され、そのタイプのフルネームに基づいたカテゴリ名が作成されます。私のログファイルに

は、私はこのようなメッセージを参照してください。

2017-07-07T09:10:46.5678506 + 02:00 0HL650T1MS1RUソケット登録は、参加者b943174e-8022-4e33-ef0dに失敗しました[WRN]交渉中の-08d4c4bc4879 42d9720f-32a2-46f9-9042-08d4c4bc4881。 (799c4f21)

私はカテゴリが、ファイルサイズを節約するためにハッシュされることをどこかで読んだ覚えているようだので、私は、タイムスタンプおよびログレベル(0HL...1RU)間の一口はカテゴリを表し、それは実際に検索可能ではありません疑います発見可能である。

ログファイル内のカテゴリ名を難読化しないようにロガーを設定するにはどうすればよいですか?

答えて

2

コードによれば、Serilog.Extensions.Logging.Fileを使用します(具体的なロガーの実装は重要です)。その面白い文字列0HL...1RUは実際には一意のリクエストIDです。私はこのロガーはプレーンテキストログのログカテゴリをサポートしていないと思います。

回避策#1:JSONのログを使用します。

loggerFactory.AddFile("filename", isJson: true); 

SourceContextプロパティは、あなたのログカテゴリを持つログ出力に表示されます。

"SourceContext":"MyNamespace.MyServiceClass" 

回避策#2:ちょうどNLogのような別のthird-party file loggerを使用しますか、完全スタンドアロンSerilog API

関連する問題