組み込みのログAPIのさまざまなAsp.Netコアサポートは、他のサードパーティのロギングをサポートしています。ConsoleLogger、DebugLogger、EventSourceLogger:CreateDefaultBuilderと呼ばれるプログラムファイルのエントリでは、当社の新しいプロジェクトの後、デフォルトの操作は、次のログプロバイダーを追加します。
私が仕事で使うロギング・コンポーネントのほとんどは、我々がAsp.Netコアでどのように統合されたlog4netのを見て、log4netのです。
まず、我々は、Nugetのlog4netのとMicrosoft.Extensions.Logging.Log4Net.AspNetCoreによってインストールをlog4netのアセンブリを追加する必要があります。
その後、我々は、プロジェクトのconfigフォルダに、プロファイルlog4net.configを導入します
<?xmlのバージョン= " 1.0 "エンコード= " UTF-8 "?> <log4netの> <! -出力のいくつかのアペンダを定義します- > <アペンダ名= " rollingAppender "タイプ=の" log4net.Appender.RollingFileAppender " > <ファイル=値「ログ\ log.txtという」 /> <! -追加のログの内容- > <appendToFile値= 「trueに」 /> <! -複数のスレッドがログイン書き込むことはできません防ぐため、関係者は非スレッドセーフ- > タイプ=の<lockingModel 」log4net.Appender。FileAppender + MinimalLock " /> < -になります!一度|サイズ|日付|コンポジット- > - < -コンポジットのサイズと日付の組み合わせです!> <RollingStyle値= 「コンポジット」 /> バックアップファイルがある場合は- <!ファイル名+サフィックス- > <datePattern値= 「YYYYMMDD.txt 」 /> <! - > -ログの最大数は、最新のです 。<! -サイズとしてrollingStyleノードは、値のみを持つことができるときログ- > <! -コンポジットとしてrollingStyleノード、値が日次ログがある- > <maxSizeRollBackups値= " 20 " /> < -台利用可能:! KB | MB | GB - > <maximumFileSize値= " 3メガバイト" /> <! - trueに設定され、> -現在のほとんどのログファイル名は、常にセクション・ファイルの名前です = <staticLogFileName値」trueに" /> <! - > - INFOとERROR間の出力レベルログ <フィルタタイプ= " log4net.Filter.LevelRangeFilter " > <PARAM NAME = " LevelMin "値= " ALL " /> の<paramの名前を= " LevelMax "値= " FATAL " /> </フィルタ> <! -それはと組み合わせる必要があり、第1のフィルタリングのみWARN、他方が他方の第2のログ出力を拒否- > <! - <フィルタタイプ= " log4net.Filter.LevelMatchFilter " > <paramの名前= " LevelToMatch "値= " WARN " /> </フィルタ> <フィルタタイプ= " log4net.Filter.DenyAllFilter " /> - > <レイアウトタイプ= " log4net.Layout.PatternLayout " > <conversionPattern値= " %日付[%スレッド] %-5level%ロガー- %メッセージ%改行" /> </レイアウト> </アペンダ> < -レベル:!OFF> FATAL> ERROR> WARN> INFO> DEBUG> ALL - > <ルート> <優先順位の値= " ALL " /> <レベル値= " ALL " /> <appender-REF REF = " rollingAppender " /> </ルート> </ log4netの>
その後ConsoleLogger、DebugLoggerまたはEventSourceLoggerを使用しない場合、メソッドは空のClearProvidersデフォルトのロギング・コンポーネントに使用することができる、プログラムでログファイルを設定し、Microsoftがロギングシステム、ログレベルの始まりが来るかaddFilterシステムを濾過します。具体的には以下のコードを参照して
パブリック 静的 IWebHostBuilder CreateWebHostBuilder(文字列 []引数)=> WebHost.CreateDefaultBuilder(引数) .ConfigureLogging((文脈、loggingBuilder) => { // loggingBuilder.ClearProviders(); loggingBuilder.AddFilter(" システム" 、LogLevel.Warning)。 loggingBuilder.AddFilter(「マイクロソフト」、LogLevel.Warning); //システムを濾別し、マイクロソフトのシステムは、次の警告ログにレベルの始まりを来る loggingBuilder.AddLog4Net(「設定/ log4net.config 」); }) .UseStartup <起動時>();
log4netの設定後、またはILoggerFactory ILoggerです<Starup>置換することができる具体的には、以下の、ロギングのためILoggerFactory ILoggerです<T>を使用してもよいです。
公共 ボイド設定(IApplicationBuilderアプリ、IHostingEnvironmentのENV、ILoggerFactoryたLogFactory) { // ILoggerですロガー= logFactory.CreateLogger(typeof演算(Log4NetLogger))。 ILoggerですロガー= logFactory.CreateLogger <起動時> (); logger.LogError(「これは最初のエラーです」)。 logger.LogInformation(「これは最初の情報です」); logger.LogDebug(「これは最初のデバッグです」); logger.LogWarning(「これは最初の警告です」)。 logger.LogInformation(System.Diagnostics.Process.GetCurrentProcess()ProcessNameの。); }
上記は、コントローラで同じでも、ログレコードをスタートアップフォルダにあるコールログを呼び出すことができます。
プライベート 読み取り専用IStudentRepository _studentRepository。 プライベート 読み取り専用 ILoggerです<にHomeController> _logger。 // 构造函数注入 公衆にHomeController(IStudentRepository studentRepository、ILoggerです<にHomeController> ロガー) { _studentRepository = studentRepository。 _logger = ロガー。 }
あなたがプログラムにログを作成したい場合は、DIコンテナから実際のILoggerです列を取得する必要があります
公共の静的な無効メイン(文字列[]引数)
{
VARのホスト= CreateWebHostBuilder(引数).Build(); VaRのロガー= host.Services.GetRequiredService <ILoggerです<プログラム>> (); logger.LogInformation(" データベースを播種しました。" ); host.Run();
}