2012-10-17 4 views
2

사용자 활동 기록 및 오류 찾기를 위해 작업 필터를 통해 세부 정보를 캡처해야하는 로거를 구현 중입니다.조치 필터에 모든 쿼리 매개 변수를 기록하려면 어떻게해야합니까?

public interface ISessionLogger 
    { 
     void LogUserActionSummary(int sessionId, string userActionType);  
     void LogUserActionDetail(int session, string userActionType, DateTime userActionStartedUtc, long actionDurationInMilliseconds, string queryParams, string referredFrom); 
    } 

내가

filterContext.Controller.ValueProvider

을 필요 같은 소리 형태로 수집, 경로 값, 액션 PARAMS, JSON 호출 및 쿼리 문자열, 모든 키와 값을 캡처 queryParams 싶습니다

하지만이 과정을 반복 할 수는 없습니다. 그럼 내가 가진 내 FilterAttribute에서

public void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var paramList = new List<string>(); 
    if(filterContext.ActionParameters != null) 
    { 
     paramList.AddRange(filterContext.ActionParameters.Select(param => String.Format("{0}:{1}", param.Key, param.Value.ToString()))); 
    } 
    if(filterContext.Controller.ValueProvider != null) 
    { 
     //loop through the valueprovider and save the key value pairs to paramList 
    } 

    _queryParams = string.Join(",", paramList); 
} 

액션 필터의 OnActionExecuting 메서드 내에서 이것을 구현하는 또 다른 방법이 있습니까?

+0

당신이 ValueProvider에 대한 자세한 내용은 MSDN을 확인 했 : 모든 filterContext.HttpContext.Request.Params 값뿐만 아니라 filterContext.RouteData 값을 로그인을 시도 수있는 대안으로

public override void OnActionExecuting(ActionExecutingContext filterContext) { var stream = filterContext.HttpContext.Request.InputStream; var data = new byte[stream.Length]; stream.Read(data, 0, data.Length); Log(Encoding.UTF8.GetString(data)); } 

? - http://msdn.microsoft.com/en-us/library/system.web.mvc.ivalueprovider(v=vs.108).aspx – KyorCode

+0

예, 열거 할 수 없습니다. – friedX

답변

2

전체 요청 본문 만 기록하면 어떨까요? 이렇게하면 사용자 요청을 재구성하는 데 필요한 모든 것을 갖게됩니다.

+0

'filterContext.HttpContext.Request.Params'는 나에게 로그를 남기지 않는 서버 변수도 줄 것입니다. 'Request.InputStream'은 예를 들어 캡처하지 않습니다. 속성을 통해 주입 된 사용자 이름은 지금까지'filterContext.HttpContext.Request.QueryString','filterContext.HttpContext.Request.Form' 및'filterContext.ActionParameters'의 조합을 가지고 있습니다. – friedX

관련 문제