Beispiel #1
0
        /// <summary>
        /// Event which indicates Informational or Error event
        /// </summary>
        /// <param name="level">Event level</param>
        /// <param name="description">The description</param>
        public void LogEvent(LogEvent.Level level, string description)
        {
            LogEventHandler handler = Event;

            if (handler != null)
            {
                handler(level, description);
            }
        }
Beispiel #2
0
        public void Receive(IEvent @event, object sender)
        {
            if (@event == null)
            {
                throw new ArgumentNullException(nameof(@event));
            }
            bool highlight = @event is IHighlightEvent;

            switch (@event)
            {
            case BeginFrameEvent _:
                while (_queuedEvents.TryDequeue(out var queuedEvent))
                {
                    try
                    {
                        switch (queuedEvent)
                        {
                        case IAsyncEvent <bool> boolEvent:
                            _exchange.RaiseAsync <bool>(boolEvent, this, x => { Console.WriteLine($"{boolEvent}: {x}"); });
                            break;

                        case IAsyncEvent <int> intEvent:
                            _exchange.RaiseAsync <int>(intEvent, this, x => { Console.WriteLine($"{intEvent}: {x}"); });
                            break;

                        default:
                            _exchange.Raise(queuedEvent, this);
                            break;
                        }
                    }
                    catch (Exception exception) { Console.WriteLine("Error: {0}", exception.Message); }
                }
                break;

            case ClearConsoleEvent _: break;     // Handled by loggers directly

            case SetLogLevelEvent e:
                _logLevel = e.Level;
                break;

            case IVerboseEvent _: break;

            case LogEvent e:
            {
                if (e.Severity < _logLevel)
                {
                    break;
                }

                Log?.Invoke(this, new LogEventArgs
                    {
                        Time    = DateTime.Now,
                        Nesting = _exchange.Nesting,
                        Message = e.Message,
                        Color   =
                            e.Severity switch
                        {
                            LogEvent.Level.Critical => Console.ForegroundColor = ConsoleColor.Red,
                            LogEvent.Level.Error => Console.ForegroundColor    = ConsoleColor.Red,
                            LogEvent.Level.Warning => Console.ForegroundColor  = ConsoleColor.Yellow,
                            _ => Console.ForegroundColor = ConsoleColor.Gray,
                        }
                    });
                break;
            }
Beispiel #3
0
 public SetLogLevelEvent(LogEvent.Level level)
 {
     Level = level;
 }