質問

私はASP.NETコアのWeb APIのプロジェクトを持っています 。今私はエラーとイベントをログに記録します。以前私のプロジェクトでELMAHを使用しましたが、elmahはASP.NETコアでは使用できないようです。マイクロソフトが提供する既定のログサービスを構成するための公式リンク参照しました。これらのログをテキストファイルまたはデータベースに保存する方法はどこにもありません。

ASP.NET Coreに既定のログ機能が既にある場合、私はelmah、log4netなどの他のツールを使用する必要があるのだろうかと思います。だから私は、dbまたはテキストファイルにログを保存するデフォルトのログを実装する記事を検索したとき、私は何も見つけることができませんでした。ロギングのためのASP.NETコアの組み込みサポートを使用してログをファイルに保存する方法はありますか?

私は現在、完全に動作するSerilogを使用しており、ブラウザにログを正常に表示するためにseqをダウンロードしています。しかし、私はまだasp.netコアロギング機能を組み込んだものを使って同じことを達成することができるのだろうかと思っています。

Serilogを使用したログファイル:

Seqを使用して表示されるログ: ここに画像の説明を入力

受け入れられた回答

私は、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-c​​hanged/

あなたが本当にシンプルなロギングが必要な場合は、ファイル拡張子を使って組み込みのロギング作業を行うことができます。出力形式の制御、外部サービスへのロギング、ファイルのローテーション、最大ファイルサイズなどのような高度な機能に着手するとすぐに、NLogまたはSerilogを使用することになります。


人気のある回答

デフォルトでは、 ASP.NET Coreロギングは、標準.NETコア抽象化および前記抽象化の実装に基づいています 。あなたが提供するリンクは、ロギングサービスを消費するために従いたいものです。これらはデバッグ時などに標準出力(出力ウィンドウ)に書き込みます。

具体的に探している部分はweb.configです。次の点を考慮してください。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" 
           resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 
                forwardWindowsAuthToken="false" stdoutLogEnabled="true"
                stdoutLogFile="C:\temp\logs\log.log" />
  </system.webServer>
</configuration>

あなたはstdoutLogEnabledstdoutLogFileを探しています。

stdoutLogEnabled trueの場合、 processPath指定されたプロセスのstdoutstderrは、 stdoutLogFile指定されたファイルにリダイレクトされstdoutLogFile

そして

stdoutLogFile processPath指定されたプロセスのstdoutとstderrがログに記録される相対ファイルパスまたは絶対パスを指定します。相対パスはサイトのルートからの相対パスです。 「〜」で始まるパスはサイトルートからの相対パスであり、他のすべてのパスは絶対パスとして扱われます。

ASP.NETコアモジュールの詳細については、「 IISへの公開」も参照してください。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ