Move LoggingService to API library

Add Additional Logging For SignalR
This commit is contained in:
Alan Moon 2025-07-14 19:07:54 -07:00
parent 0432fec3cd
commit 75b61c0a8c
4 changed files with 45 additions and 10 deletions

View File

@ -6,7 +6,7 @@ using System.Threading.Tasks;
using System.Diagnostics; using System.Diagnostics;
using System.Text.Json; using System.Text.Json;
namespace qtc_net_client_2.Services namespace QtCNETAPI.Services
{ {
public class LoggingService : IDisposable public class LoggingService : IDisposable
{ {
@ -16,7 +16,7 @@ namespace qtc_net_client_2.Services
public LoggingService() public LoggingService()
{ {
LogDate = DateTime.Now; LogDate = DateTime.Now;
LogFilePath = $"./Logs/QtCClientLog_{LogDate.ToString("ddMMyyy-hhmm")}.log"; LogFilePath = $"./Logs/QtCClientLog_{LogDate:ddMMyyy-hhmm}.log";
// create log file // create log file
@ -30,8 +30,8 @@ namespace qtc_net_client_2.Services
{ {
try try
{ {
Debug.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {message}"); Debug.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {message}");
LogFile.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {message}"); LogFile.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {message}");
} catch (ObjectDisposedException) } catch (ObjectDisposedException)
{ {
} }
@ -45,8 +45,8 @@ namespace qtc_net_client_2.Services
string modelSerialized = JsonSerializer.Serialize(model, options: new JsonSerializerOptions { WriteIndented = true }); string modelSerialized = JsonSerializer.Serialize(model, options: new JsonSerializerOptions { WriteIndented = true });
// log it // log it
Debug.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {modelSerialized}"); Debug.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {modelSerialized}");
LogFile.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {modelSerialized}"); LogFile.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {modelSerialized}");
} catch (ObjectDisposedException) } catch (ObjectDisposedException)
{ {
} }

View File

@ -8,6 +8,7 @@ using qtc_net_client_2.Services;
using qtc_net_client_2.ClientModel; using qtc_net_client_2.ClientModel;
using System.Threading.Tasks; using System.Threading.Tasks;
using QtCNETAPI.Schema; using QtCNETAPI.Schema;
using QtCNETAPI.Services;
namespace qtc_net_client_2 namespace qtc_net_client_2
{ {
@ -15,7 +16,9 @@ namespace qtc_net_client_2
{ {
private IApiService _apiService; private IApiService _apiService;
private IGatewayService _gatewayService; private IGatewayService _gatewayService;
private Config _config; private Config _config;
private ServerConfig _serverConfig;
private AudioService AudioService = new(); private AudioService AudioService = new();
private LoggingService LoggingService; private LoggingService LoggingService;
@ -878,8 +881,36 @@ namespace qtc_net_client_2
else Environment.Exit(0); else Environment.Exit(0);
} }
private void _gatewayService_OnServerReconnecting(object? sender, EventArgs e) => BeginInvoke(delegate () { Enabled = false; }); private void _gatewayService_OnServerReconnecting(object? sender, EventArgs e)
private void _gatewayService_OnServerReconnected(object? sender, EventArgs e) => BeginInvoke(delegate () { Enabled = true; }); {
var args = (ServerConnectionReconnectingEventArgs)e;
if (args.Error == null)
LoggingService.LogString("Server Requested Reconnect. Reconnecting...");
else
LoggingService.LogString($"SignalR Reconnecting Due To An Error.\n{args.Error.Message}\n{args.Error.StackTrace}");
if (IsHandleCreated && !IsDisposed)
{
Invoke(delegate ()
{
Enabled = false;
});
}
}
private void _gatewayService_OnServerReconnected(object? sender, EventArgs e)
{
LoggingService.LogString("SignalR Reconnected");
if (IsHandleCreated && !IsDisposed)
{
Invoke(delegate ()
{
Enabled = true;
});
}
}
private async void _gatewayService_OnServerConfigReceived(object? sender, EventArgs e) private async void _gatewayService_OnServerConfigReceived(object? sender, EventArgs e)
{ {
@ -888,8 +919,11 @@ namespace qtc_net_client_2
LoggingService.LogString($"Server Config Received"); LoggingService.LogString($"Server Config Received");
LoggingService.LogModel(args.ServerConfig); LoggingService.LogModel(args.ServerConfig);
if (_serverConfig != null) return; // only set server config upon client restart, not during reconnect (preventing log spam)
if (args.ServerConfig != null) if (args.ServerConfig != null)
{ {
_serverConfig = args.ServerConfig;
if (args.ServerConfig.IsDown) if (args.ServerConfig.IsDown)
{ {
LoggingService.LogString("Server Is Marked As Down"); LoggingService.LogString("Server Is Marked As Down");

View File

@ -1,6 +1,6 @@
using qtc_net_client_2.Services; using QtCNETAPI.Dtos.User;
using QtCNETAPI.Dtos.User;
using QtCNETAPI.Schema; using QtCNETAPI.Schema;
using QtCNETAPI.Services;
using QtCNETAPI.Services.ApiService; using QtCNETAPI.Services.ApiService;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;

View File

@ -1,5 +1,6 @@
using qtc_net_client_2.ClientModel; using qtc_net_client_2.ClientModel;
using qtc_net_client_2.Services; using qtc_net_client_2.Services;
using QtCNETAPI.Services;
using QtCNETAPI.Services.ApiService; using QtCNETAPI.Services.ApiService;
using QtCNETAPI.Services.GatewayService; using QtCNETAPI.Services.GatewayService;
using System.Text.Json; using System.Text.Json;