2
私は少しのサンプルプロジェクトでserilogを実装しようとしています。 I'veがやった、これまでに以下:SourceContextによるSerilogロガー設定
- を新しいASP.NETコアWebアプリケーションを作成します(MVC)
- インストール・パッケージSerilog.AspNetCore
- インストール・パッケージSerilog.Sinks.File
- インストール-package Serilog.Formatting.Compact
- フォローthisブログ投稿
- はthisブログ投稿
私の質問:
カテゴリ名(私の場合「MyLogger」)に基づいて2つの異なるロガーを設定する可能性はありますか?私はこのロガーに、私のデフォルトロガーとは異なるファイルを使用させたい。私の幸せな世界、ファンタジーでは、次のようになります。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\standardLog.txt")
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\specialLog.txt").Filter.ByIncludingOnly(x => x.SourceContext("MySpecialLogger")
.CreateLogger();
そして、私は新しいロガーを作成する場合var logger = _loggerFactory.CreateLogger("MySpecialLogger");
ログは私のspecialLog.txtファイルにリコールセーフされます。
アイデア?
まず:私の質問のための時間を持ってくれてありがとう!あなたの答えについて:条件演算子は失敗します(コンパイラエラーのみの割り当て、call(...)は文として使用できます)。このパラメータは無効です: 'Action configure =(x、wt) => x == ""? wt.File( ""):wt.File( "") '; - しかし私は本当にマップアプローチが好きです。他のアイデア? –
Joshit
固定 - ラムダが 'アクション'だったのを忘れてしまった - ありがとう –
素晴らしい! RollingFile-Sinkを使用していると、私が望むすべてのものがあります:)ありがとうございました!!!しかし、予期しない動作がまだあります.MySpecialLoggerは期待通りに動作します。しかし、File-Sinkを使用すると、私のStandardLoggerは「Starting Web Host」だけを出力します。 RollingFileを使用すると、001-logにメッセージが格納され、もう1つに起動メッセージが含まれる2つのログファイル(標準 - {date} .txtと標準 - {date} _001.txt)が取得されます。 'Log.Information(" Webホストの起動 ")' -Callを削除すると、すべてが正常に動作します... – Joshit