Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
0
        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();
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        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;
        }