質問: 私は**ASP.NETコアのWeb APIの**プロジェクトを持ってい**ます** 。今私はエラーとイベントを**ログに記録**します。以前私のプロジェクトでELMAHを使用しましたが、elmahはASP.NETコアでは使用できないようです。マイクロソフトが提供する既定のログサービスを構成するための公式リンクを参照しました。これらのログをテキストファイルまたはデータベースに保存する方法はどこにもありません。 ASP.NET Coreに既定のログ機能が既にある場合、私はelmah、log4netなどの他のツールを使用する必要があるのだろうかと思います。だから私は、dbまたはテキストファイルにログを保存するデフォルトのログを実装する記事を検索したとき、私は何も見つけることができませんでした。ロギングのためのASP.NETコアの組み込みサポートを使用してログをファイルに保存する方法はありますか? 私は現在、完全に動作するSerilogを使用しており、ブラウザにログを正常に表示するためにseqをダウンロードしています。しかし、私はまだasp.netコアロギング機能を組み込んだものを使って同じことを達成することができるのだろうかと思っています。 **Serilogを使用したログファイル:** ![](https://i.stack.imgur.com/KfYVp.png) **Seqを使用して表示されるログ:** ![ここに画像の説明を入力](https://i.stack.imgur.com/lYtpI.png)
回答: 私は、ASP.NET Coreロギングに関するブログ記事のために、このトピックについて多大な研究をしました。私は、NLog、SeriLog、およびlog4netと同様に、組み込みログを調べました。 基本的に私が見つけたのは、ILoggerFactoryがうまく動作していますが、明らかに問題が1つあります: **ファイルに書き込まれません** 。コンソール、デバッグ、ETW、その他のプロバイダをサポートしていますが、ファイルはサポートしていません。私は、ファイルのサイズ、ローテーション、それにすべての他のものについて心配しなければならないときにファイルがかなり複雑になるからだと思います。 組み込みのロギングは.NET内部ではうまく機能し、ファイルに書き込む必要はないため、.NETチームにとって実際には制限はありません。 SerilogとNLogはどちらも、ファイル書き込みを可能にするための拡張をほとんど提供していません。もちろん、これらの図書館はまた、全面的に多くの機能を提供しています。 Serilogの拡張機能は1行のコードを必要とし、ファイルロギングを追加します。ここでそれについて読むことができます: https : //github.com/serilog/serilog-extensions-logging-file 以下は、ASP.NET Coreロギングに関する私のブログ記事です。https : //stackify.com/asp-net-core-logging-what-changed/ あなたが本当にシンプルなロギングが必要な場合は、ファイル拡張子を使って組み込みのロギング作業を行うことができます。出力形式の制御、外部サービスへのロギング、ファイルのローテーション、最大ファイルサイズなどのような高度な機能に着手するとすぐに、NLogまたはSerilogを使用することになります。