diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index 665efdb95..7bc06ff71 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -487,6 +487,9 @@
Legacy.cs
+
+ Logging\ILogger.cs
+
Logging\Logger.cs
diff --git a/src/Discord.Net/Logging/ILogger.cs b/src/Discord.Net/Logging/ILogger.cs
new file mode 100644
index 000000000..200f843e4
--- /dev/null
+++ b/src/Discord.Net/Logging/ILogger.cs
@@ -0,0 +1,44 @@
+using System;
+
+namespace Discord.Logging
+{
+ public interface ILogger
+ {
+ LogSeverity Level { get; }
+
+ void Log(LogSeverity severity, string message, Exception exception = null);
+#if !NET45
+ void Log(LogSeverity severity, FormattableString message, Exception exception = null);
+#endif
+
+ void Error(string message, Exception exception = null);
+#if !NET45
+ void Error(FormattableString message, Exception exception = null);
+#endif
+ void Error(Exception exception);
+
+ void Warning(string message, Exception exception = null);
+#if !NET45
+ void Warning(FormattableString message, Exception exception = null);
+#endif
+ void Warning(Exception exception);
+
+ void Info(string message, Exception exception = null);
+#if !NET45
+ void Info(FormattableString message, Exception exception = null);
+#endif
+ void Info(Exception exception);
+
+ void Verbose(string message, Exception exception = null);
+#if !NET45
+ void Verbose(FormattableString message, Exception exception = null);
+#endif
+ void Verbose(Exception exception);
+
+ void Debug(string message, Exception exception = null);
+#if !NET45
+ void Debug(FormattableString message, Exception exception = null);
+#endif
+ void Debug(Exception exception);
+ }
+}
diff --git a/src/Discord.Net/Logging/Logger.cs b/src/Discord.Net/Logging/Logger.cs
index 9d7a6111b..9b2683055 100644
--- a/src/Discord.Net/Logging/Logger.cs
+++ b/src/Discord.Net/Logging/Logger.cs
@@ -2,7 +2,7 @@
namespace Discord.Logging
{
- public class Logger
+ public class Logger : ILogger
{
private readonly LogManager _manager;
diff --git a/src/Discord.Net/Net/Rest/BuiltInEngine.cs b/src/Discord.Net/Net/Rest/BuiltInEngine.cs
index 7e422b49a..83d12ec50 100644
--- a/src/Discord.Net/Net/Rest/BuiltInEngine.cs
+++ b/src/Discord.Net/Net/Rest/BuiltInEngine.cs
@@ -22,15 +22,15 @@ namespace Discord.Net.Rest
private readonly string _baseUrl;
private readonly AsyncLock _rateLimitLock;
+ private readonly ILogger _logger;
private DateTime _rateLimitTime;
- internal Logger Logger { get; }
- public BuiltInEngine(DiscordConfig config, string baseUrl, Logger logger)
+ public BuiltInEngine(DiscordConfig config, string baseUrl, ILogger logger)
{
_config = config;
_baseUrl = baseUrl;
- Logger = logger;
+ _logger = logger;
_rateLimitLock = new AsyncLock();
_client = new HttpClient(new HttpClientHandler
@@ -100,15 +100,18 @@ namespace Discord.Net.Rest
int milliseconds;
if (retryAfter != null && int.TryParse(retryAfter, out milliseconds))
{
- var now = DateTime.UtcNow;
- if (now >= _rateLimitTime)
+ if (_logger != null)
{
- using (await _rateLimitLock.LockAsync().ConfigureAwait(false))
+ var now = DateTime.UtcNow;
+ if (now >= _rateLimitTime)
{
- if (now >= _rateLimitTime)
+ using (await _rateLimitLock.LockAsync().ConfigureAwait(false))
{
- _rateLimitTime = now.AddMilliseconds(milliseconds);
- Logger.Warning($"Rate limit hit, waiting {Math.Round(milliseconds / 1000.0f, 2)} seconds");
+ if (now >= _rateLimitTime)
+ {
+ _rateLimitTime = now.AddMilliseconds(milliseconds);
+ _logger.Warning($"Rate limit hit, waiting {Math.Round(milliseconds / 1000.0f, 2)} seconds");
+ }
}
}
}
diff --git a/src/Discord.Net/Net/Rest/ETFRestClient.cs b/src/Discord.Net/Net/Rest/ETFRestClient.cs
index b52da1037..5a2620e89 100644
--- a/src/Discord.Net/Net/Rest/ETFRestClient.cs
+++ b/src/Discord.Net/Net/Rest/ETFRestClient.cs
@@ -9,7 +9,7 @@ namespace Discord.Net.Rest
{
private readonly ETFWriter _serializer;
- public ETFRestClient(DiscordConfig config, string baseUrl, Logger logger)
+ public ETFRestClient(DiscordConfig config, string baseUrl, ILogger logger = null)
: base(config, baseUrl, logger)
{
_serializer = new ETFWriter(new MemoryStream());
diff --git a/src/Discord.Net/Net/Rest/JsonRestClient.cs b/src/Discord.Net/Net/Rest/JsonRestClient.cs
index 5acfdf595..3aea24115 100644
--- a/src/Discord.Net/Net/Rest/JsonRestClient.cs
+++ b/src/Discord.Net/Net/Rest/JsonRestClient.cs
@@ -8,7 +8,7 @@ namespace Discord.Net.Rest
{
private JsonSerializer _serializer;
- public JsonRestClient(DiscordConfig config, string baseUrl, Logger logger)
+ public JsonRestClient(DiscordConfig config, string baseUrl, ILogger logger = null)
: base(config, baseUrl, logger)
{
_serializer = new JsonSerializer();
diff --git a/src/Discord.Net/Net/Rest/RestClient.cs b/src/Discord.Net/Net/Rest/RestClient.cs
index 0b6ed5de5..cc525779b 100644
--- a/src/Discord.Net/Net/Rest/RestClient.cs
+++ b/src/Discord.Net/Net/Rest/RestClient.cs
@@ -38,10 +38,9 @@ namespace Discord.Net.Rest
private readonly DiscordConfig _config;
private readonly IRestEngine _engine;
private readonly ETFWriter _serializer;
+ private readonly ILogger _logger;
private string _token;
- internal Logger Logger { get; }
-
public CancellationToken CancelToken { get; set; }
public string Token
@@ -54,10 +53,10 @@ namespace Discord.Net.Rest
}
}
- protected RestClient(DiscordConfig config, string baseUrl, Logger logger)
+ protected RestClient(DiscordConfig config, string baseUrl, ILogger logger = null)
{
_config = config;
- Logger = logger;
+ _logger = logger;
#if !DOTNET5_4
_engine = new RestSharpEngine(config, baseUrl, logger);
@@ -65,7 +64,7 @@ namespace Discord.Net.Rest
_engine = new BuiltInEngine(config, baseUrl, logger);
#endif
- if (Logger.Level >= LogSeverity.Verbose)
+ if (_logger != null && _logger.Level >= LogSeverity.Verbose)
{
this.SentRequest += (s, e) =>
{
@@ -82,7 +81,7 @@ namespace Discord.Net.Rest
log += $" {e.ResponseJson}";
}
}
- Logger.Verbose(log);
+ _logger.Verbose(log);
};
}
}
diff --git a/src/Discord.Net/Net/Rest/SharpRestEngine.cs b/src/Discord.Net/Net/Rest/SharpRestEngine.cs
index 325808702..a4ae3d392 100644
--- a/src/Discord.Net/Net/Rest/SharpRestEngine.cs
+++ b/src/Discord.Net/Net/Rest/SharpRestEngine.cs
@@ -19,14 +19,13 @@ namespace Discord.Net.Rest
private readonly RestSharpClient _client;
private readonly AsyncLock _rateLimitLock;
+ private readonly ILogger _logger;
private DateTime _rateLimitTime;
- internal Logger Logger { get; }
-
- public RestSharpEngine(DiscordConfig config, string baseUrl, Logger logger)
+ public RestSharpEngine(DiscordConfig config, string baseUrl, ILogger logger)
{
_config = config;
- Logger = logger;
+ _logger = logger;
_rateLimitLock = new AsyncLock();
_client = new RestSharpClient(baseUrl)
@@ -89,15 +88,18 @@ namespace Discord.Net.Rest
int milliseconds;
if (retryAfter != null && int.TryParse((string)retryAfter.Value, out milliseconds))
{
- var now = DateTime.UtcNow;
- if (now >= _rateLimitTime)
+ if (_logger != null)
{
- using (await _rateLimitLock.LockAsync().ConfigureAwait(false))
+ var now = DateTime.UtcNow;
+ if (now >= _rateLimitTime)
{
- if (now >= _rateLimitTime)
+ using (await _rateLimitLock.LockAsync().ConfigureAwait(false))
{
- _rateLimitTime = now.AddMilliseconds(milliseconds);
- Logger.Warning($"Rate limit hit, waiting {Math.Round(milliseconds / 1000.0f, 2)} seconds");
+ if (now >= _rateLimitTime)
+ {
+ _rateLimitTime = now.AddMilliseconds(milliseconds);
+ _logger.Warning($"Rate limit hit, waiting {Math.Round(milliseconds / 1000.0f, 2)} seconds");
+ }
}
}
}