public static async Task LogAsync(LogObject log) { if (Initialized) { await PostLogInternal(log); } }
private static void AddExceptionDataAsLogParameter(Exception ex, LogObject log, string prefixo = "") { foreach (DictionaryEntry item in ex.Data) { log.AddParameter($"{prefixo}{item.Key}", item.Value); } }
public static void Log(LogObject log) { if (Initialized) { Task.Run(() => LogAsync(log)).Wait(); } }
internal static LogObject CreateExceptionLog(Exception ex) { var log = new LogObject(CreateExceptionMessage(ex), ELogType.Error, ex.Source); AddExceptionDataAsLogParameter(ex, log); LogInnerException(ex, log); return(log); }
public static async Task LogAsync(string message, ELogType logType = ELogType.Info, string source = null, dynamic parameters = null) { if (Initialized) { var log = new LogObject(message, logType); FillDynamicParameters(parameters, log); await PostLogInternal(log); } }
private static async Task PostLogInternal(LogObject log) { if (Initialized) { log.SetSorceIfEmpty(DefaultSourceName); foreach (var obs in _logObserversList) { await obs.HandleLogAsync(log, SessionId); } } }
private static void FillDynamicParameters(dynamic parameters, LogObject log) { if (parameters != null) { var properties = parameters.GetType().DeclaredProperties as System.Reflection.PropertyInfo[]; foreach (var property in properties) { log.AddParameter(property.Name, property.GetValue(parameters)); } } }
private static void LogInnerException(Exception ex, LogObject log, int level = 1) { if (ex.InnerException != null) { var innerEx = ex.InnerException; var excepLevel = $"ExLevel{level}"; log.AddParameter(excepLevel, CreateExceptionMessage(innerEx)); AddExceptionDataAsLogParameter(innerEx, log, excepLevel); LogInnerException(innerEx, log, ++level); } }