私は.net/c#noob(長年のサーブレット/ Java開発者)です
mvcアプリケーションにログを追加する必要があります。パフォーマンス面でかなり安価で、構成が簡単なものにしたいと思います。
私が最初にやりたいことは、各着信コントローラーアクションをログに記録することです。単一のエントリポイントが存在する可能性があるため、すべてのコントローラのアクションメソッドにコード行を追加する必要がないことに気づきました。
私の見方では、[LogRequest]属性をコントローラー(私の場合はベースコントローラー)に追加してから、
public class LogsRequestsAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ ... }
}
logrequest属性を処理するクラス。
また
私は次のようにベースコントローラーをオーバーライドすることができます:
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// perform some action here
}
}
BaseControllerからすべてのコントローラーを継承します。
パフォーマンスの観点から、どちらが速いでしょうか?
また、パフォーマンスの観点から、実際のロギングメソッド呼び出しを、一度実行されて終了する非ブロッキングスレッドに入れることを検討しています。このアプローチの落とし穴はありますか?目標は、アプリを続行させ、ロギングメソッドがタスクを完了するのを待たないことです。