private ErrorLogT MakeLogEntity(ArcheFx.Diagnostics.TraceContext context, ExceptionTraceEntry entry, string execStatement) { ErrorLogT log = new ErrorLogT(); log.TargetServer = Environment.MachineName; log.ComponentType = entry.MethodInfo.ComponentType.ToString(); log.Message = entry.Message; log.StackTrace = entry.StackTrace; log.UserId = entry.UserID; log.SystemNm = "E"; log.Reg_dt = DateTime.Now; log.EXECSTATEMENT = execStatement; log.error_domain = context.HttpContext.Request.Url.Authority; if (null != context.HttpContext) { string path = context.HttpContext.Request.Url.AbsolutePath; if (false == string.IsNullOrEmpty(path)) { log.METHOD = path + @"?"; } else { log.METHOD = @"(no path)?"; } } log.METHOD += entry.MethodInfo.Method.Name; return log; }
protected bool IsLoggableError(ExceptionTraceEntry entry) { if (entry.Exception is ebay.NoLoggingException) return false; if (entry.Exception is System.Threading.ThreadAbortException) return false; if (entry.Exception is HttpRequestValidationException) return false; //잠재적 위험... 메시지가 많으므로 제외 하기로 결정(2005-12-01) if (entry.Exception is InvalidOperationException) return false; //URL이 예기치 않게... 메소드호출이 유효하지 않은경우 if (entry.Exception is HttpException) { if (((HttpException)entry.Exception).GetHttpCode() == 404) return false;//404 에러 제외 하기로 결정(2005-12-12) if (null != entry.Exception.InnerException && entry.Exception.InnerException is System.Web.UI.ViewStateException) return false; // ViewState 오류는 스크래핑으로 간주 (로깅은 CAL에 맞김) } return true; }