public static void HandleAggregateException(AggregateException aex, PodeListener listener = default(PodeListener), PodeLoggingLevel level = PodeLoggingLevel.Error) { aex.Handle((ex) => { if (ex is IOException || ex is OperationCanceledException) { return(true); } PodeHelpers.WriteException(ex, listener, level); return(false); }); }
public static void WriteErrorMessage(string message, PodeListener listener = default(PodeListener), PodeLoggingLevel level = PodeLoggingLevel.Error, PodeContext context = default(PodeContext)) { // do nothing if no message if (string.IsNullOrWhiteSpace(message)) { return; } // return if logging disabled, or if level isn't being logged if (listener != default(PodeListener) && (!listener.ErrorLoggingEnabled || !listener.ErrorLoggingLevels.Contains(level.ToString(), StringComparer.InvariantCultureIgnoreCase))) { return; } if (context == default(PodeContext)) { Console.WriteLine($"[{level}]: {message}"); } else { Console.WriteLine($"[{level}]: [ContextId: {context.ID}] {message}"); } }
public static void WriteException(Exception ex, PodeListener listener = default(PodeListener), PodeLoggingLevel level = PodeLoggingLevel.Error) { if (ex == default(Exception)) { return; } // return if logging disabled, or if level isn't being logged if (listener != default(PodeListener) && (!listener.ErrorLoggingEnabled || !listener.ErrorLoggingLevels.Contains(level.ToString(), StringComparer.InvariantCultureIgnoreCase))) { return; } // write the exception to terminal Console.WriteLine($"[{level}] {ex.GetType().Name}: {ex.Message}"); Console.WriteLine(ex.StackTrace); }