MessageQueue.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections.Concurrent;
  2. namespace Server
  3. {
  4. public class MessageQueue
  5. {
  6. private static readonly MessageQueue instance = new MessageQueue();
  7. public static MessageQueue Instance
  8. {
  9. get { return instance; }
  10. }
  11. public readonly ConcurrentQueue<string> MessageLog = new ConcurrentQueue<string>();
  12. public readonly ConcurrentQueue<string> DebugLog = new ConcurrentQueue<string>();
  13. public readonly ConcurrentQueue<string> ChatLog = new ConcurrentQueue<string>();
  14. public MessageQueue() { }
  15. public void Enqueue(string msg)
  16. {
  17. if (MessageLog.Count < 100)
  18. MessageLog.Enqueue(String.Format("[{0}]: {1}" + Environment.NewLine, DateTime.Now, msg));
  19. Logger.GetLogger(LogType.Server).Info(msg);
  20. }
  21. public void Enqueue(Exception ex)
  22. {
  23. if (MessageLog.Count < 100)
  24. MessageLog.Enqueue(String.Format("[{0}]: {1} - {2}" + Environment.NewLine, DateTime.Now, ex.TargetSite, ex));
  25. Logger.GetLogger(LogType.Server).Error(ex);
  26. }
  27. public void EnqueueDebugging(string msg)
  28. {
  29. if (DebugLog.Count < 100)
  30. DebugLog.Enqueue(String.Format("[{0}]: {1}" + Environment.NewLine, DateTime.Now, msg));
  31. Logger.GetLogger(LogType.Debug).Debug(msg);
  32. }
  33. public void EnqueueChat(string msg)
  34. {
  35. if (ChatLog.Count < 100)
  36. ChatLog.Enqueue(String.Format("[{0}]: {1}" + Environment.NewLine, DateTime.Now, msg));
  37. Logger.GetLogger(LogType.Chat).Info(msg);
  38. }
  39. }
  40. }