1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-07 16:06:15 +00:00

Updated logging, added pinging settings to websocket

This commit is contained in:
JKorf 2018-03-21 10:49:08 +01:00
parent 020893fcbf
commit 46a37937e5
7 changed files with 49 additions and 10 deletions

View File

@ -177,7 +177,7 @@ namespace CryptoExchange.Net.UnitTests
{ {
ApiCredentials = new ApiCredentials("Test", "Test2"), ApiCredentials = new ApiCredentials("Test", "Test2"),
LogVerbosity = verbosity, LogVerbosity = verbosity,
LogWriter = tw LogWriters = new List<TextWriter>() { tw }
}); });
} }
else else

View File

@ -7,7 +7,7 @@
<PropertyGroup> <PropertyGroup>
<PackageId>CryptoExchange.Net</PackageId> <PackageId>CryptoExchange.Net</PackageId>
<Authors>JKorf</Authors> <Authors>JKorf</Authors>
<PackageVersion>0.0.12</PackageVersion> <PackageVersion>0.0.13</PackageVersion>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl> <PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl> <PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl>

View File

@ -38,10 +38,9 @@ namespace CryptoExchange.Net
/// <param name="exchangeOptions">Options</param> /// <param name="exchangeOptions">Options</param>
protected void Configure(ExchangeOptions exchangeOptions) protected void Configure(ExchangeOptions exchangeOptions)
{ {
if (exchangeOptions.LogWriter != null) log.UpdateWriters(exchangeOptions.LogWriters);
log.TextWriter = exchangeOptions.LogWriter;
log.Level = exchangeOptions.LogVerbosity; log.Level = exchangeOptions.LogVerbosity;
apiProxy = exchangeOptions.Proxy; apiProxy = exchangeOptions.Proxy;
if(apiProxy != null) if(apiProxy != null)
log.Write(LogVerbosity.Info, $"Setting api proxy to {exchangeOptions.Proxy.Host}:{exchangeOptions.Proxy.Port}"); log.Write(LogVerbosity.Info, $"Setting api proxy to {exchangeOptions.Proxy.Host}:{exchangeOptions.Proxy.Port}");
@ -292,6 +291,7 @@ namespace CryptoExchange.Net
public virtual void Dispose() public virtual void Dispose()
{ {
log.Write(LogVerbosity.Debug, "Disposing exchange client");
} }
} }
} }

View File

@ -28,9 +28,9 @@ namespace CryptoExchange.Net
public LogVerbosity LogVerbosity { get; set; } = LogVerbosity.Info; public LogVerbosity LogVerbosity { get; set; } = LogVerbosity.Info;
/// <summary> /// <summary>
/// The log writer /// The log writers
/// </summary> /// </summary>
public TextWriter LogWriter { get; set; } = new DebugTextWriter(); public List<TextWriter> LogWriters { get; set; } = new List<TextWriter>() {new DebugTextWriter()};
/// <summary> /// <summary>
/// List of ratelimiters to use /// List of ratelimiters to use

View File

@ -23,6 +23,18 @@ namespace CryptoExchange.Net.Implementation
public bool IsClosed => socket.State == WebSocketState.Closed; public bool IsClosed => socket.State == WebSocketState.Closed;
public bool IsOpen => socket.State == WebSocketState.Open; public bool IsOpen => socket.State == WebSocketState.Open;
public bool PingConnection
{
get => socket.EnableAutoSendPing;
set => socket.EnableAutoSendPing = value;
}
public TimeSpan PingInterval
{
get => TimeSpan.FromSeconds(socket.AutoSendPingInterval);
set => socket.AutoSendPingInterval = (int) Math.Round(value.TotalSeconds);
}
public BaseSocket(string url):this(url, new Dictionary<string, string>(), new Dictionary<string, string>()) public BaseSocket(string url):this(url, new Dictionary<string, string>(), new Dictionary<string, string>())
{ {
} }
@ -36,6 +48,8 @@ namespace CryptoExchange.Net.Implementation
socket.Closed += (o, s) => Handle(closehandlers); socket.Closed += (o, s) => Handle(closehandlers);
socket.Error += (o, s) => Handle(errorhandlers, s.Exception); socket.Error += (o, s) => Handle(errorhandlers, s.Exception);
socket.MessageReceived += (o, s) => Handle(messagehandlers, s.Message); socket.MessageReceived += (o, s) => Handle(messagehandlers, s.Message);
socket.EnableAutoSendPing = true;
socket.AutoSendPingInterval = 10;
} }
public event Action OnClose public event Action OnClose

View File

@ -15,6 +15,8 @@ namespace CryptoExchange.Net.Interfaces
bool IsClosed { get; } bool IsClosed { get; }
bool IsOpen { get; } bool IsOpen { get; }
bool PingConnection { get; set; }
TimeSpan PingInterval { get; set; }
Task<bool> Connect(); Task<bool> Connect();
void Send(string data); void Send(string data);

View File

@ -1,11 +1,14 @@
using System; using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq;
namespace CryptoExchange.Net.Logging namespace CryptoExchange.Net.Logging
{ {
public class Log public class Log
{ {
public TextWriter TextWriter { get; internal set; } = new DebugTextWriter(); private List<TextWriter> writers;
private LogVerbosity level = LogVerbosity.Info; private LogVerbosity level = LogVerbosity.Info;
public LogVerbosity Level public LogVerbosity Level
@ -21,10 +24,30 @@ namespace CryptoExchange.Net.Logging
} }
} }
public Log()
{
writers = new List<TextWriter>();
}
public void UpdateWriters(List<TextWriter> textWriters)
{
writers = textWriters;
}
public void Write(LogVerbosity logType, string message) public void Write(LogVerbosity logType, string message)
{ {
if ((int)logType >= (int)Level) foreach (var writer in writers)
TextWriter.WriteLine($"{DateTime.Now:hh:mm:ss:fff} | {logType} | {message}"); {
try
{
if ((int) logType >= (int) Level)
writer.WriteLine($"{DateTime.Now:yyyy/MM/dd hh:mm:ss:fff} | {logType} | {message}");
}
catch (Exception e)
{
Debug.WriteLine("Failed to write log: " + e.Message);
}
}
} }
} }