ASP.NET Coreログ
ASP.NET Coreログ処理
ASP.NET Coreはサポートログを内蔵し、開発者が使いたい他のログフレームワークに簡単に切り替えることができます.DIからILoggerFactoryまたはILoggerを要求すると、アプリケーションにログ機能を追加できます.
参考原文:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging?tabs=aspnetcore1x
ASP.NET Coreは、重要度または重大度の順序付けを増やすことによって、6つのログ・レベルを定義します.
トレースは、最も詳細なログ・メッセージを記録するために使用されます.通常、開発フェーズのデバッグの問題にのみ使用されます.これらのメッセージには、機密のアプリケーションデータが含まれている可能性があります.したがって、本番環境では使用できません.デフォルトでは無効にします.例:Credentials:{"User":"someuser","Password":"P@ssword”}
Debugというメッセージは開発段階で短期間で役に立つ.デバッグに役立つかもしれませんが、長期的な価値はありません.デフォルトでは、これが最も詳細なログです.例:Entering method Configure with flag set to true
Informationというメッセージは、アプリケーションの一般的なプロセスを追跡するために使用されます.Verboseレベルのメッセージとは逆に、これらのログには長期的な価値があるはずです.例:Request received for path/foo
Warningは、アプリケーションにエラーが発生したり、プログラムが停止しない他のプロセス異常や予期せぬイベントが発生した場合に、後で調査するために警告レベルを使用します.警告レベルの例外を共通の場所で処理します.例:Login failed for IP 127.0.0.1またはFileNotFoundException for file foo.txt
Errorアプリケーションが何らかの障害で停止した場合、エラーログを記録する必要があります.これらのメッセージは、アプリケーション範囲の障害ではなく、現在のHTTPリクエストなどの現在のアクティビティまたはアクションを示す必要があります.例:Cannot insert record due to duplicate key violation
Criticalは、アプリケーションまたはシステムがクラッシュし、災害的な障害が発生した場合、すぐに注目する必要がある場合は、重要なレベルのログを記録する必要があります.例:データの消失、ディスク容量の不足など.
適用例:
[HttpGet]
public IEnumerable GetAll()
{
_logger.LogInformation(LoggingEvents.LIST_ITEMS, "Listing all items");
EnsureItems();
return _todoRepository.GetAll();
}
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(string id)
{
_logger.LogInformation(LoggingEvents.GET_ITEM, "Getting item {0}", id);
var item = _todoRepository.Find(id);
if (item == null)
{
_logger.LogWarning(LoggingEvents.GET_ITEM_NOTFOUND, "GetById({0}) NOT FOUND", id);
return NotFound();
}
return new ObjectResult(item);
}
伝達可能なパラメータ:
string dataはメッセージを記録します.
EventId eventIdは、デジタルタイプのidを使用してログをマークし、一連のイベントを相互に関連付けることができます.記録されたイベントIDは、指定されたタイプの時間に固有の静的であるべきである.たとえば、カートに商品を追加したイベントIDを1000とマークし、請求書のイベントIDを1001とマークして、これらのログ記録をスマートにフィルタリングして処理することができます.
string formatログメッセージのフォーマット文字列.
object[]argsは、フォーマットされたオブジェクトのセットに使用されます.
Exception errorは、記録に使用される例外インスタンスです.