/// <summary> /// /// </summary> /// <param name="entityType"></param> /// <param name="dataMapping"></param> /// <param name="cmdType"></param> /// <param name="query"></param> /// <param name="sqlParams"></param> /// <returns></returns> public override Array SelectMultipleEntities(Type entityType, ArcheFx.Data.DataMappingCollection dataMapping, System.Data.CommandType cmdType, string query, params SqlParameter[] sqlParams) { string key = null; object ret = null; if (CacheEnabled) { key = CreateHashKey(entityType, query, sqlParams); ret = CacheManager.GetData(key); if (ret != null && ret is Array) return (Array) ret; } ret = base.SelectMultipleEntities (entityType, dataMapping, cmdType, query, sqlParams); if (CacheEnabled) { AddToCache(key, ret); } return (Array) ret; }
public void WriteContext(ArcheFx.Diagnostics.TraceContext context) { TraceEntryCollection list = context.TraceEntryList; int count = context.TraceEntryList.Count; string execStatement = string.Empty; for (int i = 0; i < count; i++) { TraceEntry entry = list[i]; if (TraceEntryType.DBQuery == entry.EntryType) { DBQueryTraceEntry dbEntry = entry as DBQueryTraceEntry; if (null != dbEntry) execStatement = BuildExecStatement(dbEntry); } } for (int i = 0; i < count; i++) { TraceEntry entry = list[i]; if (TraceEntryType.Error == entry.EntryType) { if ((this.SupportEntryTypes & TraceEntryType.Error) == TraceEntryType.Error && (entry.Category.SupportEntryTypes & TraceEntryType.Error) == TraceEntryType.Error) { ExceptionTraceEntry exEntry = entry as ExceptionTraceEntry; if (null != exEntry && true == this.IsLoggableError(exEntry)) { ErrorLogT log = MakeLogEntity(context, exEntry, execStatement); Thread writer = new Thread(new ThreadStart(new SqlWriteInstance(log).WriteProc)); // DB Lock 상태에서 Lock 과 상관없이 응답이 옮 writer.Start(); } } } } }
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; }