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); } }
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); } } } }