diff --git a/ExchangeClient.cs b/ExchangeClient.cs index 80c7348..5e73c55 100644 --- a/ExchangeClient.cs +++ b/ExchangeClient.cs @@ -43,6 +43,8 @@ namespace CryptoExchange.Net log.Level = exchangeOptions.LogVerbosity; apiProxy = exchangeOptions.Proxy; + if(apiProxy != null) + log.Write(LogVerbosity.Info, $"Setting api proxy to {exchangeOptions.Proxy.Host}:{exchangeOptions.Proxy.Port}"); rateLimiters = new List(); foreach (var rateLimiter in exchangeOptions.RateLimiters) @@ -72,6 +74,7 @@ namespace CryptoExchange.Net /// protected void SetAuthenticationProvider(AuthenticationProvider authentictationProvider) { + log.Write(LogVerbosity.Debug, "Setting api credentials"); authProvider = authentictationProvider; } @@ -92,7 +95,7 @@ namespace CryptoExchange.Net log.Write(LogVerbosity.Debug, $"Request {uri.AbsolutePath} was limited by {limitedBy}ms by {limiter.GetType().Name}"); } - log.Write(LogVerbosity.Debug, $"Sending request to {request.Uri}"); + log.Write(LogVerbosity.Debug, $"Sending {(signed ? "signed": "")} request to {request.Uri}"); var result = await ExecuteRequest(request).ConfigureAwait(false); return result.Error != null ? new CallResult(null, result.Error) : Deserialize(result.Data); } @@ -140,6 +143,7 @@ namespace CryptoExchange.Net { var reader = new StreamReader(response.GetResponseStream()); var responseData = await reader.ReadToEndAsync().ConfigureAwait(false); + log.Write(LogVerbosity.Warning, "Server returned an error: " + responseData); return new CallResult(null, ParseErrorResponse(responseData)); } catch (Exception) @@ -148,13 +152,18 @@ namespace CryptoExchange.Net var infoMessage = "No response from server"; if (response == null) + { + log.Write(LogVerbosity.Warning, infoMessage); return new CallResult(null, new WebError(infoMessage)); - + } + infoMessage = $"Status: {response.StatusCode}-{response.StatusDescription}, Message: {we.Message}"; + log.Write(LogVerbosity.Warning, infoMessage); return new CallResult(null, new ServerError(infoMessage)); } catch (Exception e) { + log.Write(LogVerbosity.Error, $"Unkown error occured: {e.GetType()}, {e.Message}, {e.StackTrace}"); return new CallResult(null, new UnknownError(e.Message + ", data: " + returnedData)); } } @@ -185,11 +194,15 @@ namespace CryptoExchange.Net } catch (JsonReaderException jre) { - return new CallResult(null, new DeserializeError($"Error occured at Path: {jre.Path}, LineNumber: {jre.LineNumber}, LinePosition: {jre.LinePosition}. Received data: {data}")); + var info = $"{jre.Message}, Path: {jre.Path}, LineNumber: {jre.LineNumber}, LinePosition: {jre.LinePosition}. Received data: {data}"; + log.Write(LogVerbosity.Error, info); + return new CallResult(null, new DeserializeError(info)); } catch (JsonSerializationException jse) { - return new CallResult(null, new DeserializeError($"Message: {jse.Message}. Received data: {data}")); + var info = $"{jse.Message}. Received data: {data}"; + log.Write(LogVerbosity.Error, info); + return new CallResult(null, new DeserializeError(info)); } } diff --git a/Logging/Log.cs b/Logging/Log.cs index 60fdb79..fbd2ef3 100644 --- a/Logging/Log.cs +++ b/Logging/Log.cs @@ -6,7 +6,20 @@ namespace CryptoExchange.Net.Logging public class Log { public TextWriter TextWriter { get; internal set; } = new DebugTextWriter(); - public LogVerbosity Level { get; internal set; } = LogVerbosity.Warning; + private LogVerbosity level = LogVerbosity.Info; + + public LogVerbosity Level + { + get => level; + set + { + if (level != value) + { + Write(LogVerbosity.Info, "Loglevel set to " + value); + level = value; + } + } + } public void Write(LogVerbosity logType, string message) { @@ -18,6 +31,7 @@ namespace CryptoExchange.Net.Logging public enum LogVerbosity { Debug, + Info, Warning, Error, None