示例#1
0
文件: Log.cs 项目: Kuzaki/alkahest
        void LogMessage(LogLevel level, string format, params object[] args)
        {
            if (format == null)
            {
                throw new ArgumentNullException(nameof(format));
            }

            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            if (!ShouldLog(level))
            {
                return;
            }

            var msg   = args.Length != 0 ? string.Format(format, args) : format;
            var now   = DateTime.Now;
            var stamp = TimestampFormat != string.Empty ?
                        now.ToString(TimestampFormat) : null;

            lock (_lock)
            {
                MessageLogged?.Invoke(this, new LogEventArgs(level, now, msg));

                foreach (var logger in Loggers)
                {
                    logger.Log(level, stamp, Source, Category, msg);
                }
            }
        }
 internal void RaiseMessageLoggedEvent(MediaLogMessage e)
 {
     GuiContext.Current.EnqueueInvoke(() =>
     {
         MessageLogged?.Invoke(this, new MediaLogMessageEventArgs(e));
     });
 }
示例#3
0
 internal void OnMessageLogged(ILogMessage msg)
 {
     if (this.MessageLogged != null)
     {
         MessageLogged?.Invoke(msg);
     }
 }
示例#4
0
            public void Log(object sender, MessageLoggedEventArgs e)
            {
                MessageLogged?.Invoke(sender, e);

                var level = e.Severity switch
                {
                    LogMessageSeverity.Trace => LogLevel.Trace,
                    LogMessageSeverity.Debug => LogLevel.Debug,
                    LogMessageSeverity.Information => LogLevel.Information,
                    LogMessageSeverity.Warning => LogLevel.Warning,
                    LogMessageSeverity.Error => LogLevel.Error,
                    LogMessageSeverity.Critical => LogLevel.Critical,

                    _ => LogLevel.None
                };

                // downgrade unknown dispatch logs to debug level
                if (e.Source.Equals("Gateway", StringComparison.OrdinalIgnoreCase) && e.Message.Contains("Unknown dispatch", StringComparison.OrdinalIgnoreCase))
                {
                    level = level < LogLevel.Debug ? level : LogLevel.Debug;
                }

                _logger.Log(level, e.Exception, $"[{e.Source}] {e.Message}");

                // log a note about expired tokens: https://github.com/chiyadev/MudaeFarm/issues/153
                if (e.Message.Contains("AuthenticationFailed", StringComparison.OrdinalIgnoreCase))
                {
                    _logger.Log(level, "Your Discord authentication token seems to have expired. Please try updating your token in \"profiles.json\" file in the folder \"%localappdata%\\MudaeFarm\".");
                }
            }
        }
示例#5
0
        private static void LogMessage(LogObject logObject)
        {
            _log.Add(logObject);

            var message = logObject.ToString();

            if (logObject.Type == MessageType.Error)
            {
                Trace.TraceError(message);
            }
            else if (logObject.Type == MessageType.Warning)
            {
                Trace.TraceWarning(message);
            }
            else
            {
                Trace.TraceInformation(message);
            }

            if (Out != null)
            {
                try
                {
                    Out.WriteLine(message);
                    Out.Flush();
                }
                catch (Exception e)
                {
                    Trace.TraceError("Unable to write to the log output stream: {0}", e);
                    Out = null;
                }
            }

            MessageLogged?.Invoke(logObject);
        }
示例#6
0
        public void Log(string text, LogState state = LogState.None)
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return;
            }

            lock (Logs)
            {
                var log = new Log()
                {
                    Date    = DateTime.Now,
                    Message = text,
                    State   = state
                };

                if (Logs.Count >= 100)
                {
                    Logs.RemoveRange(0, Logs.Count - 100);
                }

                Logs.Add(log);
                MessageLogged?.Invoke();
            }
        }
示例#7
0
            public void Log(object sender, MessageLoggedEventArgs e)
            {
                MessageLogged?.Invoke(sender, e);

                var level = e.Severity switch
                {
                    LogMessageSeverity.Trace => LogLevel.Trace,
                    LogMessageSeverity.Debug => LogLevel.Debug,
                    LogMessageSeverity.Information => LogLevel.Information,
                    LogMessageSeverity.Warning => LogLevel.Warning,
                    LogMessageSeverity.Error => LogLevel.Error,
                    LogMessageSeverity.Critical => LogLevel.Critical,

                    _ => LogLevel.None
                };

                // downgrade unknown dispatch logs to debug level
                if (e.Source.Equals("Gateway", StringComparison.OrdinalIgnoreCase) && e.Message.Contains("Unknown dispatch", StringComparison.OrdinalIgnoreCase))
                {
                    level = level < LogLevel.Debug ? level : LogLevel.Debug;
                }

                _logger.Log(level, e.Exception, $"[{e.Source}] {e.Message}");
            }
        }
示例#8
0
        /// <summary>
        /// Returns the message as parseable BaseStation message text.
        /// </summary>
        /// <param name="emitExtendedBaseStationFormat">True if MLAT-sourced messages should use a message type of MLAT, false if they should use MSG. Ignored for other message types.</param>
        /// <returns>The properties of the message formatted up as a text string that can be sent to any application
        /// that can interpret BaseStation messages.</returns>
        public string ToBaseStationString(bool emitExtendedBaseStationFormat = false)
        {
            StringBuilder result = new StringBuilder();
            var           messageGeneratedLocal = MessageGenerated.ToLocalTime();
            var           messageLoggedLocal    = MessageLogged.ToLocalTime();

            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", BaseStationMessageHelper.ConvertToString(MessageType, IsMlat, emitExtendedBaseStationFormat));
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", MessageType == BaseStationMessageType.Transmission ? BaseStationMessageHelper.ConvertToString(TransmissionType) : "");
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", SessionId);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", AircraftId);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Icao24);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", FlightId);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0:yyyy/MM/dd},", messageGeneratedLocal);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0:HH:mm:ss.fff},", messageGeneratedLocal);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0:yyyy/MM/dd},", messageLoggedLocal);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0:HH:mm:ss.fff},", messageLoggedLocal);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", MessageType == BaseStationMessageType.StatusChange ? BaseStationMessageHelper.ConvertToString(StatusCode) : Callsign);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Altitude);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Round.GroundSpeed(GroundSpeed));
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Round.Track(Track));
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Round.Coordinate(Latitude));
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Round.Coordinate(Longitude));
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", VerticalRate);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Squawk);
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", SquawkHasChanged == null ? "" : SquawkHasChanged.Value ? "-1" : "0");
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", Emergency == null ? "" : Emergency.Value ? "-1" : "0");
            result.AppendFormat(CultureInfo.InvariantCulture, "{0},", IdentActive == null ? "" : IdentActive.Value ? "-1" : "0");
            result.AppendFormat(CultureInfo.InvariantCulture, "{0}", OnGround.GetValueOrDefault() ? "-1" : "0");        // Turns out BaseStation never emits a null OnGround value...

            return(result.ToString());
        }
示例#9
0
        public void Log(object sender, MessageLoggedEventArgs e)
        {
            if (sender == null)
            {
                throw new ArgumentNullException(nameof(sender));
            }

            if (e == null)
            {
                throw new ArgumentNullException(nameof(e));
            }

            Delegate[] list;
            lock (_lock)
            {
                list = MessageLogged?.GetInvocationList();
            }

            if (list == null)
            {
                return;
            }

            for (var i = 0; i < list.Length; i++)
            {
                var handler = list[i] as EventHandler <MessageLoggedEventArgs>;
                try
                {
                    handler(sender, e);
                }
                catch { }
            }
        }
示例#10
0
文件: Log.cs 项目: twobe7/KupoNutsBot
        public static void Write(string message, string category)
        {
            string str = "[" + DateTime.Now.ToString(@"HH:mm:ss") + "][" + category + "] " + message;

            Console.WriteLine(str);
            MessageLogged?.Invoke(str);
        }
示例#11
0
 public static void Dispatch(string level, string message)
 {
     if (MessageLogged != null)
     {
         MessageLogged.Invoke(null, new LogMessageEventArgs(level, message));
     }
 }
示例#12
0
        public void Log(string message)
        {
            var logMessage = $"[{DateTime.Now}] {message}\n";

            MessageLogged?.Invoke(logMessage);
            Console.Write(logMessage);

            _allLogs.Append(logMessage);
        }
示例#13
0
        /// <summary>
        /// Invokes the MessageLogged event with the new event from the legacy TraceEvent system.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="eventType"></param>
        /// <param name="id"></param>
        /// <param name="text"></param>
        public override void TraceEvent(string source, LogEventType eventType, int id, string text)
        {
            Event @event = new Event(0, (int)eventType, text, source, 0);

            using (EventCollection eventCollection = new EventCollection(new Event[] { @event }))
            {
                MessageLogged.Invoke(eventCollection);
            }
        }
        protected virtual void Log(MessageLoggedEventArgs e)
        {
            if (e.IsError)
            {
                HasLoggedErrors = true;
            }

            MessageLogged?.Invoke(this, e);
        }
示例#15
0
        public void Log(VerboseLevels verbosity, string message)
        {
            if (verbosity > Verbosity)
            {
                return;
            }

            MessageLogged?.Invoke(this, new SapLogEventArgs(verbosity, message));
        }
示例#16
0
        public static void Info(string message)
        {
            MessageLogged?.Invoke(LogType.Info, message);
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine(GetPrefix() + message);
            Console.ForegroundColor = originalColor;
        }
示例#17
0
        public static void Success(string message)
        {
            MessageLogged?.Invoke(LogType.Success, message);
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(GetPrefix() + message);
            Console.ForegroundColor = originalColor;
        }
示例#18
0
        public static void Success(object message)
        {
            MessageLogged?.Invoke(LogType.Success, message.ToString());
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(message);
            Console.ForegroundColor = originalColor;
        }
示例#19
0
        public static void Warning(string message)
        {
            MessageLogged?.Invoke(LogType.Warning, message);
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(GetPrefix() + message);
            Console.ForegroundColor = originalColor;
        }
示例#20
0
        public static void ColoredLog(object message, ConsoleColor color)
        {
            MessageLogged?.Invoke(LogType.Info, message.ToString());
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = color;
            Console.WriteLine(message);
            Console.ForegroundColor = originalColor;
        }
示例#21
0
        public static void Warning(object message)
        {
            MessageLogged?.Invoke(LogType.Warning, message.ToString());
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(message);
            Console.ForegroundColor = originalColor;
        }
示例#22
0
        public static void Error(object message)
        {
            MessageLogged?.Invoke(LogType.Error, message.ToString());
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(message);
            Console.ForegroundColor = originalColor;
        }
示例#23
0
 internal void RaiseMessageLoggedEvent(MediaLogMessage e)
 {
     WindowsPlatform.Instance.Gui?.EnqueueInvoke(DispatcherPriority.Background,
                                                 new Action <MediaLogMessage>((eventArgs) =>
     {
         MessageLogged?.Invoke(this, new MediaLogMessageEventArgs(eventArgs));
     }),
                                                 e);
 }
示例#24
0
 protected void OnMessageLogged(MessageLevel level, string?message, Exception?error)
 {
     try
     {
         MessageLogged?.Invoke(level, message, error);
     }
     catch
     {
     }
 }
示例#25
0
 static public void LogMessage(string msg)
 {
     Console.WriteLine(msg);
     LogMessages.Enqueue(msg);
     while (LogMessages.Count > 200)
     {
         LogMessages.TryDequeue(out _);
     }
     MessageLogged?.Invoke(msg);
 }
示例#26
0
        public static void Debug(object message)
        {
#if DEBUG
            MessageLogged?.Invoke(LogType.Debug, message.ToString());
            ConsoleColor originalColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(message);
            Console.ForegroundColor = originalColor;
#endif
        }
示例#27
0
        public static void Error(string message)
        {
            WriteToLog(LogType.Error, message);
            MessageLogged?.Invoke(LogType.Error, message);
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(GetPrefix() + message);
            Console.ForegroundColor = originalColor;
        }
示例#28
0
 public static void Debug(string message)
 {
     if (DEBUG)
     {
         MessageLogged?.Invoke(LogType.Debug, message);
         ConsoleColor originalColor = Console.ForegroundColor;
         Console.ForegroundColor = ConsoleColor.Blue;
         Console.WriteLine(GetPrefix() + message);
         Console.ForegroundColor = originalColor;
     }
 }
示例#29
0
        /// <summary>
        /// Trigger <see cref="MessageLogged"/>, and stop weaving if
        /// <paramref name="importance"/> is <see cref="MessageImportance.Error"/>.
        /// </summary>
        private void LogMessage(object sender, string msg, MessageImportance importance)
        {
            bool willThrow = importance == MessageImportance.Error ||
                             (importance == MessageImportance.Warning && TreatWarningsAsErrors);

            MessageLogged?.Invoke(new MessageLoggedEventArgs(msg, importance, willThrow, BeingProcessed, sender.GetType()));

            if (willThrow)
            {
                throw new WeavingException(msg, BeingProcessed, sender.GetType());
            }
        }
示例#30
0
 /// <summary>
 /// Logs the specified message.
 /// </summary>
 /// <param name="msg">The MSG.</param>
 public static void LogMessage(string msg, LogAction action = LogAction.LogOnly)
 {
     try
     {
         Log.Information(msg);
         if (action == LogAction.LogAndShow)
         {
             MessageLogged?.Invoke(null, DateTime.Now + " : " + msg);
         }
     }
     catch (Exception)
     { }
 }
 public void Handle(MessageLogged message)
 {
     var msg = String.Format("{0}:{1}:{2}", message.DateTime, message.LogLevel, message.Message);
     DebugText = DebugText + Environment.NewLine + msg;
 }