Exemplo n.º 1
0
        public async Task LogMessageAsync(SocketUserMessage msg, bool isSuccessfulCommand)
        {
            RecentMessages.Add(await DbMessage.CreateAsync(msg, PlayerCollection, isSuccessfulCommand));

            while (RecentMessages.Count > 5)
            {
                var oldest = RecentMessages.Aggregate((l, r) => l.CreateTime < r.CreateTime ? l : r);

                await oldest.DeleteAsync();

                RecentMessages.Remove(oldest);
            }
        }
Exemplo n.º 2
0
        public static void Log(LogType type, [NotNull] string message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }
            if (!Enabled)
            {
                return;
            }

            string line = DateTime.Now.ToLongTimeString() + " > " + GetPrefix(type) + message;   // localized

            lock ( LogLock ) {
                RaiseLoggedEvent(message, line, type);

                RecentMessages.Enqueue(line);
                while (RecentMessages.Count > MaxRecentMessages)
                {
                    RecentMessages.Dequeue();
                }

                if (LogFileOptions[(int)type])
                {
                    string actualLogFileName;
                    switch (SplittingType)
                    {
                    case LogSplittingType.SplitBySession:
                        actualLogFileName = Path.Combine(Paths.LogPath, SessionFileName);
                        break;

                    case LogSplittingType.SplitByDay:
                        actualLogFileName = Path.Combine(Paths.LogPath, DateTime.Now.ToString(ShortDateFormat) + ".log");         // localized
                        break;

                    default:
                        actualLogFileName = Path.Combine(Paths.LogPath, DefaultLogFileName);
                        break;
                    }
                    try {
                        File.AppendAllText(actualLogFileName, line + Environment.NewLine);
                    } catch (Exception ex) {
                        string errorMessage = "Logger.Log: " + ex.Message;
                        RaiseLoggedEvent(errorMessage,
                                         DateTime.Now.ToLongTimeString() + " > " + GetPrefix(LogType.Error) + errorMessage,    // localized
                                         LogType.Error);
                    }
                }
            }
        }