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:
parent
020893fcbf
commit
46a37937e5
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user