Esempio n. 1
0
        public void Notify(Exception e, ErrorSeverity severity = ErrorSeverity.Error, Metadata extraMetadata = null)
        {
            if (!ShouldNotify)
            {
                return;
            }
            if (IgnoredExceptions != null && IgnoredExceptions.Contains(e.GetType()))
            {
                return;
            }

            var md = new Metadata(metadata);

            if (extraMetadata != null)
            {
                md.Merge(extraMetadata);
            }

            var ev = new Event()
            {
                User        = userInfo,
                App         = GetAppInfo(),
                AppState    = GetAppState(),
                System      = GetSystemInfo(),
                SystemState = GetSystemState(),
                Context     = Context,
                Severity    = severity,
                Exceptions  = ConvertExceptionTree(e),
                Metadata    = md,
            };

            SendEvent(ev);
        }
Esempio n. 2
0
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            var exceptionIsIgnored = IgnoredExceptions.Contains(exception?.GetType());

            if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";

                Console.WriteLine(log);

                if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
                {
                    throw new Exception($"Unexpected critical error. {log}", exception);
                }
            }

            // Fail tests where not all the connections close during server shutdown.
            if (eventId.Id == 21 && eventId.Name == nameof(KestrelTrace.NotAllConnectionsAborted))
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception?.Message}";
                throw new Exception($"Shutdown failure. {log}");
            }

            Messages.Enqueue(new LogMessage
            {
                LogLevel  = logLevel,
                EventId   = eventId,
                Exception = exception,
                Message   = formatter(state, exception)
            });
        }
Esempio n. 3
0
        public void Notify(Exception e, ErrorSeverity severity = ErrorSeverity.Error, Metadata extraMetadata = null)
        {
            if (!ShouldNotify)
            {
                return;
            }
            if (IgnoredExceptions != null && IgnoredExceptions.Contains(e.GetType()))
            {
                return;
            }

            var md = new Metadata(metadata);

            if (extraMetadata != null)
            {
                md.Merge(extraMetadata);
            }

            notifier.Notify(new Event()
            {
                User        = GetUserInfo(),
                App         = state.GetApplicationInfo(),
                AppState    = state.GetApplicationState(),
                System      = state.GetSystemInfo(),
                SystemState = state.GetSystemState(),
                Context     = Context,
                Severity    = severity,
                Exceptions  = exceptionConverter.Convert(e),
                Metadata    = md,
            });
        }
Esempio n. 4
0
 /// <summary>
 /// For after scnearion hooks.
 /// </summary>
 public void ContinueOnError(Action action)
 {
     try
     {
         action();
     }
     catch (Exception e)
     {
         Exception = e;
         IgnoredExceptions.Add(e);
     }
 }
Esempio n. 5
0
        public void Invoke(T target)
        {
            var wait = new DefaultWait <T>(target)
            {
                PollingInterval = PollingInterval,
                Timeout         = Timeout,
                Message         = string.Format("Failed to perform {0}", _action)
            };

            wait.IgnoreExceptionTypes(IgnoredExceptions.ToArray());
            wait.Until(InvokeConditionalAction);
        }
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            var exceptionIsIgnored = IgnoredExceptions.Contains(exception?.GetType());

            if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";

                Console.WriteLine(log);

                if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
                {
                    throw new Exception($"Unexpected critical error. {log}", exception);
                }
            }

            // Fail tests where not all the connections close during server shutdown.
            if (ThrowOnUngracefulShutdown &&
                ((eventId.Id == 16 && eventId.Name == nameof(KestrelTrace.NotAllConnectionsClosedGracefully)) ||
                 (eventId.Id == 21 && eventId.Name == nameof(KestrelTrace.NotAllConnectionsAborted))))
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
                throw new Exception($"Shutdown failure. {log}");
            }

            // We don't use nameof here because this is logged by the transports and we don't know which one is
            // referenced in this shared source file.
            if (eventId.Id == 14 && eventId.Name == "ConnectionError")
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
                throw new Exception($"Unexpected connection error. {log}");
            }

            var logMessage = new LogMessage
            {
                LogLevel  = logLevel,
                EventId   = eventId,
                Exception = exception,
                Message   = formatter(state, exception)
            };

            Messages.Enqueue(logMessage);

            if (_messageFilter?.Invoke(logMessage) == true)
            {
                var localTcs = _messageFilterTcs;
                // need to set tcs to null before calling TrySetResult
                // to prevent the next WaitForMessage possibly throwing for a non-null tcs
                _messageFilterTcs = null;
                localTcs.TrySetResult(logMessage);
            }
        }
Esempio n. 7
0
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            var exceptionIsIgnored = IgnoredExceptions.Contains(exception?.GetType());

            if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";

                Console.WriteLine(log);

                if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
                {
                    throw new Exception($"Unexpected critical error. {log}", exception);
                }
            }

            // Fail tests where not all the connections close during server shutdown.
            if (ThrowOnUngracefulShutdown &&
                ((eventId.Id == 16 && eventId.Name == nameof(KestrelTrace.NotAllConnectionsClosedGracefully)) ||
                 (eventId.Id == 21 && eventId.Name == nameof(KestrelTrace.NotAllConnectionsAborted))))
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
                throw new Exception($"Shutdown failure. {log}");
            }

            // We don't use nameof here because this is logged by the transports and we don't know which one is
            // referenced in this shared source file.
            if (eventId.Id == 14 && eventId.Name == "ConnectionError")
            {
                var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
                throw new Exception($"Unexpected connection error. {log}");
            }

            Messages.Enqueue(new LogMessage
            {
                LogLevel  = logLevel,
                EventId   = eventId,
                Exception = exception,
                Message   = formatter(state, exception)
            });
        }