private static List<SqlParameter> CreateDefaultParameters(LogSourceType sourceType, LogType logType, LogData data) { // ProcessInfo에서 추출 string message = null; string description = null; if (data != null) { message = data.Description; description = data.ValueStack; } // 필드값 생성 return CreateDefaultParameters(sourceType, logType, message, description); }
/// <summary> /// 경고 메시지 로깅. /// </summary> /// <param name="sourceType">Source 타입</param> /// <param name="data">LogData 개체. null이 아닐 경우, 포함된 DataStack 정보를 기록함.</param> public static void WriteWarning(LogSourceType sourceType, LogData data) { // 로깅 사용하지 않을 경우 종료 if (!_enableLog) return; if (!_enableWarningLog) return; // StackTrace 원본이 LogManager일 경우 종료 if (CalledBySelf()) return; try { // 필드값 생성 List<SqlParameter> values = CreateDefaultParameters(sourceType, LogType.Warning, data); // DB에 쓰기 InsertIntoDatabase(values); } catch { } // 로깅 시 예외 발생은 무조건 스킵 }
/// <summary> /// Exception.Data에 LogData에 포함된 Values 데이터 추가. 예외 처리됨. /// 이미 키가 있을 경우, 덮어써짐. /// </summary> /// <param name="ex">Exception 개체</param> /// <param name="data">Value가 포함된 LogData 개체</param> public static void AddExceptionData(ref Exception ex, LogData data) { if (ex == null) return; if (data == null) return; if (data.Values == null || data.Values.Count == 0) return; try { foreach (string key in data.Values.Keys) { AddExceptionData(ref ex, key, data.Values[key]); } } catch { } // 로깅 시 예외 발생은 무조건 스킵 }
/// <summary> /// 성능 로깅. /// </summary> /// <param name="sourceType">Source 타입</param> /// <param name="data">LogData 개체. null일 경우, 로그 남지 않음.</param> public static void WritePerformance(LogSourceType sourceType, LogData data) { // 로깅 사용하지 않을 경우 종료 if (!_enableLog) return; if (!_enablePerformanceLog) return; // StackTrace 원본이 LogManager일 경우 종료 if (CalledBySelf()) return; try { // 소요 시간이 컨피그에 정의된 시간보다 같거나 클 경우에만 기록 // -> 컨피그 정의 시간이 0 이하이면 항상 기록됨 if (data != null) { // 타이머 종료 data.StopTimer(); if (data.ElapsedMilliseconds >= _performanceMilliseconds) { string message = data.Description; string description = data.ValueStack; // 필드값 생성 List<SqlParameter> values = CreateDefaultParameters(sourceType, LogType.Performance, message, description); values.Add(new SqlParameter("@StartTime", data.StartTime.ToString("yyyy-MM-dd HH:mm:ss.fff"))); values.Add(new SqlParameter("@EndTime", data.EndTime.ToString("yyyy-MM-dd HH:mm:ss.fff"))); values.Add(new SqlParameter("@ElapsedMilliseconds", data.ElapsedMilliseconds)); // DB에 쓰기 InsertIntoDatabase(values); } } } catch { } // 로깅 시 예외 발생은 무조건 스킵 }
private static List <SqlParameter> CreateDefaultParameters(LogSourceType sourceType, LogType logType, LogData data) { // ProcessInfo에서 추출 string message = null; string description = null; if (data != null) { message = data.Description; description = data.ValueStack; } // 필드값 생성 return(CreateDefaultParameters(sourceType, logType, message, description)); }