/// <summary> /// アクション メソッドの呼び出し後に発生します。 /// https://msdn.microsoft.com/ja-jp/library/dn573277.aspx /// </summary> /// <param name="actionExecutedContext">HttpActionExecutedContext</param> /// <param name="cancellationToken">CancellationToken</param> public override async Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) { // Calling base class method. await base.OnActionExecutedAsync(actionExecutedContext, cancellationToken); // 性能測定終了 this.perfRec.EndsPerformanceRecord(); // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); string strLogMessage = "," + userName + //this.UserInfo.UserName + "," + ipAddress + //this.UserInfo.IPAddress + "," + "<-----" + "," + this.ControllerName + "," + this.ActionName + "(OnActionExecuted)" + "," + perfRec.ExecTime + "," + perfRec.CpuTime; LogIF.InfoLog("ACCESS", strLogMessage); }
/// <summary> /// アクション メソッドの呼び出し前に発生します。 /// https://msdn.microsoft.com/ja-jp/library/dn573278.aspx /// </summary> /// <param name="actionContext">HttpActionContext</param> /// <param name="cancellationToken">CancellationToken</param> public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken) { // Controller・Action名を取得する。 this.GetControllerAndActionName(actionContext); // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 権限チェック ------------------------------------------------ // ・・・ // ------------------------------------------------------------- // 閉塞チェック ------------------------------------------------ // ・・・ // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); // Calling base class method. await base.OnActionExecutingAsync(actionContext, cancellationToken); // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + userName + //this.UserInfo.UserName + "," + ipAddress + //this.UserInfo.IPAddress + "," + "----->" + "," + this.ControllerName + "," + this.ActionName + "(OnActionExecuting)"; LogIF.InfoLog("ACCESS", strLogMessage); }
/// <summary>エラーログの出力</summary> /// <param name="exceptionContext">HttpActionExecutedContext</param> private void OutputErrorLog(ExceptionContext exceptionContext) { // 非同期ControllerのInnerException対策(底のExceptionを取得する)。 Exception ex = exceptionContext.Exception; Exception bottomException = ex; while (bottomException.InnerException != null) { bottomException = bottomException.InnerException; } // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); string strLogMessage = "," + userName + // (this.UserInfo != null ? this.UserInfo.UserName : "******") + "," + ipAddress + //(this.UserInfo != null ? this.UserInfo.IPAddress : "null") + "," + "<-----" + "," + this.ControllerName + "," + this.ActionName + "(ExecuteExceptionFilterAsync)" + "," + //this.perfRec.ExecTime + "," + //this.perfRec.CpuTime + "," + GetExceptionMessageID(bottomException) + "," + bottomException.Message + "\r\n" + "," + bottomException.StackTrace + "\r\n" + "," + ex.ToString(); // Exception.ToString()はRootのExceptionに対して行なう。 LogIF.ErrorLog("ACCESS", strLogMessage); }
/// <summary> /// アクション メソッドの呼び出し前に発生します(netcore)。 /// https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.mvc.filters.actionfilterattribute.onactionexecutionasync /// </summary> /// <param name="context">HttpActionContext</param> /// <param name="next">ActionExecutionDelegate</param> public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { #region OnActionExecutingAsyncから移行 // Controller・Action名を取得する。 this.GetControllerAndActionName(context); // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 権限チェック ------------------------------------------------ // ・・・ // ------------------------------------------------------------- // 閉塞チェック ------------------------------------------------ // ・・・ // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + userName + //this.UserInfo.UserName + "," + ipAddress + //this.UserInfo.IPAddress + "," + "----->" + "," + this.ControllerName + "," + this.ActionName + "(OnActionExecuting)"; LogIF.InfoLog("ACCESS", strLogMessage); // 性能測定終了 this.perfRec.EndsPerformanceRecord(); #endregion await base.OnActionExecutionAsync(context, next); #region OnActionExecutedAsyncから移行 // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ----------- strLogMessage = "," + userName + //this.UserInfo.UserName + "," + ipAddress + //this.UserInfo.IPAddress + "," + "<-----" + "," + this.ControllerName + "," + this.ActionName + "(OnActionExecuted)" + "," + perfRec.ExecTime + "," + perfRec.CpuTime; LogIF.InfoLog("ACCESS", strLogMessage); #endregion }