You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

LogManager.cs 4.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Threading.Tasks;
  3. namespace Discord.Logging
  4. {
  5. internal class LogManager
  6. {
  7. public LogSeverity Level { get; }
  8. private Logger ClientLogger { get; }
  9. public event Func<LogMessage, Task> Message { add { _messageEvent.Add(value); } remove { _messageEvent.Remove(value); } }
  10. private readonly AsyncEvent<Func<LogMessage, Task>> _messageEvent = new AsyncEvent<Func<LogMessage, Task>>();
  11. public LogManager(LogSeverity minSeverity)
  12. {
  13. Level = minSeverity;
  14. ClientLogger = new Logger(this, "Discord");
  15. }
  16. public async Task LogAsync(LogSeverity severity, string source, Exception ex)
  17. {
  18. try
  19. {
  20. if (severity <= Level)
  21. await _messageEvent.InvokeAsync(new LogMessage(severity, source, null, ex)).ConfigureAwait(false);
  22. }
  23. catch { }
  24. }
  25. public async Task LogAsync(LogSeverity severity, string source, string message, Exception ex = null)
  26. {
  27. try
  28. {
  29. if (severity <= Level)
  30. await _messageEvent.InvokeAsync(new LogMessage(severity, source, message, ex)).ConfigureAwait(false);
  31. }
  32. catch { }
  33. }
  34. public async Task LogAsync(LogSeverity severity, string source, FormattableString message, Exception ex = null)
  35. {
  36. try
  37. {
  38. if (severity <= Level)
  39. await _messageEvent.InvokeAsync(new LogMessage(severity, source, message.ToString(), ex)).ConfigureAwait(false);
  40. }
  41. catch { }
  42. }
  43. public Task ErrorAsync(string source, Exception ex)
  44. => LogAsync(LogSeverity.Error, source, ex);
  45. public Task ErrorAsync(string source, string message, Exception ex = null)
  46. => LogAsync(LogSeverity.Error, source, message, ex);
  47. public Task ErrorAsync(string source, FormattableString message, Exception ex = null)
  48. => LogAsync(LogSeverity.Error, source, message, ex);
  49. public Task WarningAsync(string source, Exception ex)
  50. => LogAsync(LogSeverity.Warning, source, ex);
  51. public Task WarningAsync(string source, string message, Exception ex = null)
  52. => LogAsync(LogSeverity.Warning, source, message, ex);
  53. public Task WarningAsync(string source, FormattableString message, Exception ex = null)
  54. => LogAsync(LogSeverity.Warning, source, message, ex);
  55. public Task InfoAsync(string source, Exception ex)
  56. => LogAsync(LogSeverity.Info, source, ex);
  57. public Task InfoAsync(string source, string message, Exception ex = null)
  58. => LogAsync(LogSeverity.Info, source, message, ex);
  59. public Task InfoAsync(string source, FormattableString message, Exception ex = null)
  60. => LogAsync(LogSeverity.Info, source, message, ex);
  61. public Task VerboseAsync(string source, Exception ex)
  62. => LogAsync(LogSeverity.Verbose, source, ex);
  63. public Task VerboseAsync(string source, string message, Exception ex = null)
  64. => LogAsync(LogSeverity.Verbose, source, message, ex);
  65. public Task VerboseAsync(string source, FormattableString message, Exception ex = null)
  66. => LogAsync(LogSeverity.Verbose, source, message, ex);
  67. public Task DebugAsync(string source, Exception ex)
  68. => LogAsync(LogSeverity.Debug, source, ex);
  69. public Task DebugAsync(string source, string message, Exception ex = null)
  70. => LogAsync(LogSeverity.Debug, source, message, ex);
  71. public Task DebugAsync(string source, FormattableString message, Exception ex = null)
  72. => LogAsync(LogSeverity.Debug, source, message, ex);
  73. public Logger CreateLogger(string name) => new Logger(this, name);
  74. public async Task WriteInitialLog()
  75. {
  76. await ClientLogger.InfoAsync($"Discord.Net v{DiscordConfig.Version} (API v{DiscordConfig.APIVersion})").ConfigureAwait(false);
  77. }
  78. }
  79. }