From 0073efc9ace7cd17be19a7377119eb36860f7a92 Mon Sep 17 00:00:00 2001 From: Harrison Deng Date: Thu, 22 Apr 2021 20:39:22 -0500 Subject: [PATCH] Moved logging system to separate repository. --- .gitmodules | 3 ++ SimpleLogger | 1 + .../GameServiceWarden.Core.csproj | 1 + .../Logging/ILogRecievable.cs | 28 ---------- .../Logging/LogLevel.cs | 10 ---- src/GameServiceWarden.Core/Logging/Logger.cs | 52 ------------------- .../Module/ServiceDescriptor.cs | 6 +-- .../UI/IPCController.cs | 2 +- src/GameServiceWarden.Core/UI/IPCMediator.cs | 30 +++++------ .../GameServiceWarden.Core.Tests.csproj | 1 + .../Modules/ServiceDescriptorTest.cs | 3 +- .../Modules/ServiceManagerTest.cs | 2 +- .../UI/IPCMediatorTest.cs | 2 +- .../XUnitLogger.cs | 4 +- 14 files changed, 30 insertions(+), 115 deletions(-) create mode 100644 .gitmodules create mode 160000 SimpleLogger delete mode 100644 src/GameServiceWarden.Core/Logging/ILogRecievable.cs delete mode 100644 src/GameServiceWarden.Core/Logging/LogLevel.cs delete mode 100644 src/GameServiceWarden.Core/Logging/Logger.cs diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0d12baa --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "SimpleLogger"] + path = SimpleLogger + url = https://systems.reslate.xyz/git/ydeng/SimpleLogger.git diff --git a/SimpleLogger b/SimpleLogger new file mode 160000 index 0000000..f9931ee --- /dev/null +++ b/SimpleLogger @@ -0,0 +1 @@ +Subproject commit f9931eea4295353befffcf1880ea510cc259e9f2 diff --git a/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj b/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj index d735878..2ffcddc 100644 --- a/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj +++ b/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj @@ -3,6 +3,7 @@ + diff --git a/src/GameServiceWarden.Core/Logging/ILogRecievable.cs b/src/GameServiceWarden.Core/Logging/ILogRecievable.cs deleted file mode 100644 index ca97a4c..0000000 --- a/src/GameServiceWarden.Core/Logging/ILogRecievable.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; - -namespace GameServiceWarden.Core.Logging -{ - public interface ILogReceiver - { - string Identifier { get; } - - /// - /// The severity of the messages this log should receive. - /// - /// The severity of the logs. - LogLevel Level { get; } - - /// - /// Logs the message. - /// - /// The message to be logged. - /// The time at which this message was requested to be logged. - /// The severity of this message. - void LogMessage(string message, DateTime time, LogLevel level); - - /// - /// Called when this receiver should explicitly flush received messages. - /// - void Flush(); - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.Core/Logging/LogLevel.cs b/src/GameServiceWarden.Core/Logging/LogLevel.cs deleted file mode 100644 index adb5f5e..0000000 --- a/src/GameServiceWarden.Core/Logging/LogLevel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace GameServiceWarden.Core.Logging -{ - public enum LogLevel : int - { - FATAL, - INFO, - WARNING, - DEBUG, - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.Core/Logging/Logger.cs b/src/GameServiceWarden.Core/Logging/Logger.cs deleted file mode 100644 index 6dc23b1..0000000 --- a/src/GameServiceWarden.Core/Logging/Logger.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; - -namespace GameServiceWarden.Core.Logging -{ - public static class Logger { - private static readonly ConcurrentDictionary listeners = new ConcurrentDictionary(); - - /// - /// Logs the message to listeners that are listening to the set severity of the message or greater. - /// - /// The message to log. - /// The level of severity, by default, info. - public static void Log(string message, LogLevel level = LogLevel.INFO) { - foreach (ILogReceiver listener in listeners.Values) - { - if (level <= listener.Level) { - listener.LogMessage(message, DateTime.Now, level); - } - } - } - - /// - /// Adds a log listener. - /// - /// The listener to add. - public static void AddLogListener(ILogReceiver listener) { - listeners[listener.Identifier] = listener; - } - - /// - /// Removes a log listener. - /// - /// The listener to remove. - public static void RemoveLogListener(ILogReceiver listener) { - ILogReceiver receiver; - listeners.TryRemove(listener.Identifier, out receiver); - } - - /// - /// Called when all listeners should perform any flushing they need. - /// - public static void FlushListeners() - { - foreach (ILogReceiver listener in listeners.Values) - { - listener.Flush(); - } - } - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.Core/Module/ServiceDescriptor.cs b/src/GameServiceWarden.Core/Module/ServiceDescriptor.cs index c3d7092..d55ed6f 100644 --- a/src/GameServiceWarden.Core/Module/ServiceDescriptor.cs +++ b/src/GameServiceWarden.Core/Module/ServiceDescriptor.cs @@ -10,7 +10,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using GameServiceWarden.Core.Module.Exceptions; -using GameServiceWarden.Core.Logging; +using SimpleLogger; using GameServiceWarden.ModuleFramework; using System.Net.Sockets; @@ -90,7 +90,7 @@ namespace GameServiceWarden.Core.Module /// Is thrown when the service is not running. public void ExecuteCommand(string command) { - Logger.Log($"\"{ServiceName}\" is executing command \"{command}\".", LogLevel.DEBUG); + Logger.Log($"\"{ServiceName}\" is executing command \"{command}\".", LogLevel.Debug); if (state != ServiceState.Running) throw new InvalidOperationException("Service instance not running."); service.ExecuteCommand(command); } @@ -145,7 +145,7 @@ namespace GameServiceWarden.Core.Module private void OnServiceStateChange(object sender, ServiceState state) { this.state = state; - Logger.Log($"The service \"{ServiceName}\" is changing states to {this.state}.", LogLevel.DEBUG); + Logger.Log($"The service \"{ServiceName}\" is changing states to {this.state}.", LogLevel.Debug); ServiceStateChangeEvent?.Invoke(this, this.state); } diff --git a/src/GameServiceWarden.Core/UI/IPCController.cs b/src/GameServiceWarden.Core/UI/IPCController.cs index 98ebf5d..719ed58 100644 --- a/src/GameServiceWarden.Core/UI/IPCController.cs +++ b/src/GameServiceWarden.Core/UI/IPCController.cs @@ -3,7 +3,7 @@ using System.Text.Json; using GameServiceWarden.InteractionAPI; using GameServiceWarden.InteractionAPI.Communicable.Requests; using GameServiceWarden.Core.Module; -using GameServiceWarden.Core.Logging; +using SimpleLogger; namespace GameServiceWarden.Core.UI { diff --git a/src/GameServiceWarden.Core/UI/IPCMediator.cs b/src/GameServiceWarden.Core/UI/IPCMediator.cs index 72b1729..2fd90fc 100644 --- a/src/GameServiceWarden.Core/UI/IPCMediator.cs +++ b/src/GameServiceWarden.Core/UI/IPCMediator.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; using GameServiceWarden.InteractionAPI; using GameServiceWarden.InteractionAPI.Communicable.Requests; using GameServiceWarden.InteractionAPI.Communicable.Responses; -using GameServiceWarden.Core.Logging; +using SimpleLogger; namespace GameServiceWarden.Core.UI { @@ -41,7 +41,7 @@ namespace GameServiceWarden.Core.UI active = true; stopAcceptingToken = new CancellationTokenSource(); connectionTask = AcceptConnections(); - Logger.Log($"IPCMediator \"{name}\" has begun asynchronously accepting interfaces.", LogLevel.DEBUG); + Logger.Log($"IPCMediator \"{name}\" has begun asynchronously accepting interfaces.", LogLevel.Debug); } public void Close() @@ -115,7 +115,7 @@ namespace GameServiceWarden.Core.UI while (active) { connectingPipe = new NamedPipeServerStream(PipeName, PipeDirection.InOut, NamedPipeServerStream.MaxAllowedServerInstances, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); - Logger.Log("Waiting for connection.", LogLevel.DEBUG); + Logger.Log("Waiting for connection.", LogLevel.Debug); await connectingPipe.WaitForConnectionAsync(stopAcceptingToken.Token); connectionTasks.Add(OnConnection(connectingPipe)); for (int i = 0; i < connectionTasks.Count; i++) @@ -127,7 +127,7 @@ namespace GameServiceWarden.Core.UI } } } - Logger.Log("Waiting for connection tasks.", LogLevel.DEBUG); + Logger.Log("Waiting for connection tasks.", LogLevel.Debug); foreach (Task task in connectionTasks) { task.Wait(); @@ -137,7 +137,7 @@ namespace GameServiceWarden.Core.UI private async Task OnConnection(NamedPipeServerStream pipe) { - Logger.Log("Interface attempting to connect.", LogLevel.DEBUG); + Logger.Log("Interface attempting to connect.", LogLevel.Debug); byte[] headerBuffer = new byte[sizeof(uint) * 2]; int headerFill = 0; CancellationTokenSource headerCancel = new CancellationTokenSource(TIMEOUT); @@ -153,13 +153,13 @@ namespace GameServiceWarden.Core.UI catch (AggregateException e) { e.Handle((exception) => exception is TaskCanceledException); - Logger.Log($"Interface did not send header data within {TIMEOUT}ms.", LogLevel.DEBUG); + Logger.Log($"Interface did not send header data within {TIMEOUT}ms.", LogLevel.Debug); } finally { await pipe.DisposeAsync(); headerCancel.Dispose(); } if (headerFill != headerBuffer.Length) { - Logger.Log($"Interface failed to send header data.", LogLevel.DEBUG); + Logger.Log($"Interface failed to send header data.", LogLevel.Debug); return; } @@ -182,13 +182,13 @@ namespace GameServiceWarden.Core.UI catch (AggregateException e) { e.Handle((exception) => exception is TaskCanceledException); - Logger.Log($"Interface failed to send body data within {TIMEOUT}.", LogLevel.DEBUG); + Logger.Log($"Interface failed to send body data within {TIMEOUT}.", LogLevel.Debug); } finally { await pipe.DisposeAsync(); bodyCancel.Dispose(); } if (bodyFill != bodyBuffer.Length) { - Logger.Log($"Interface failed to send body data.", LogLevel.DEBUG); + Logger.Log($"Interface failed to send body data.", LogLevel.Debug); return; } @@ -199,12 +199,12 @@ namespace GameServiceWarden.Core.UI if (string.IsNullOrWhiteSpace(request.requestedIdentifier)) { response.invalidName = true; response.errorMsg = $"The requested identifier \"{request.requestedIdentifier}\" is null or whitespace."; - Logger.Log(response.errorMsg, LogLevel.DEBUG); + Logger.Log(response.errorMsg, LogLevel.Debug); } else if (pipes.ContainsKey(request.requestedIdentifier)) { response.invalidName = true; response.nameTaken = true; response.errorMsg = $"Interface requested identifier \"{request.requestedIdentifier}\" is taken."; - Logger.Log(response.errorMsg, LogLevel.DEBUG); + Logger.Log(response.errorMsg, LogLevel.Debug); } else { requestAccepted = true; response.identifier = request.requestedIdentifier; @@ -217,7 +217,7 @@ namespace GameServiceWarden.Core.UI catch (AggregateException e) { e.Handle((exception) => exception is TaskCanceledException); - Logger.Log($"Interface did not receive response within {TIMEOUT}ms.", LogLevel.DEBUG); + Logger.Log($"Interface did not receive response within {TIMEOUT}ms.", LogLevel.Debug); } if (!requestAccepted) { cancelResponse.Dispose(); @@ -232,7 +232,7 @@ namespace GameServiceWarden.Core.UI private async Task Listen(string identifier, NamedPipeServerStream pipe) { - Logger.Log($"Started listening to interface \"{identifier}\".", LogLevel.DEBUG); + Logger.Log($"Started listening to interface \"{identifier}\".", LogLevel.Debug); byte[] buffer = new byte[1024]; byte[] headerBuffer = new byte[sizeof(uint) * 2]; byte[] bodyBuffer = null; @@ -274,11 +274,11 @@ namespace GameServiceWarden.Core.UI } } } - Logger.Log($"Pipe for interface \"{identifier}\" has closed.", LogLevel.DEBUG); + Logger.Log($"Pipe for interface \"{identifier}\" has closed.", LogLevel.Debug); (NamedPipeServerStream, Task) removedPipe; pipes.TryRemove(identifier, out removedPipe); await removedPipe.Item1.DisposeAsync(); - Logger.Log($"Stopped listening to interface \"{identifier}\".", LogLevel.DEBUG); + Logger.Log($"Stopped listening to interface \"{identifier}\".", LogLevel.Debug); } } } \ No newline at end of file diff --git a/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj b/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj index b4cdf6b..38b5505 100644 --- a/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj +++ b/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj @@ -16,6 +16,7 @@ + diff --git a/tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs b/tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs index 3dbf2a7..9140202 100644 --- a/tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs @@ -1,11 +1,10 @@ using System.Collections.Generic; using System.IO; using GameServiceWarden.Core.Module; -using GameServiceWarden.Core.Logging; using GameServiceWarden.ModuleFramework; using Xunit; using Xunit.Abstractions; -using System.Text; +using SimpleLogger; namespace GameServiceWarden.Core.Tests.Modules { diff --git a/tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs b/tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs index aa4a2e7..0e04ef6 100644 --- a/tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.IO; using GameServiceWarden.Core.Module; -using GameServiceWarden.Core.Logging; +using SimpleLogger; using GameServiceWarden.ModuleFramework; using Xunit; using Xunit.Abstractions; diff --git a/tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs b/tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs index d6d5692..b20e790 100644 --- a/tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs +++ b/tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs @@ -1,5 +1,5 @@ using System; -using GameServiceWarden.Core.Logging; +using SimpleLogger; using GameServiceWarden.Core.UI; using Xunit; using Xunit.Abstractions; diff --git a/tests/GameServiceWarden.Core.Tests/XUnitLogger.cs b/tests/GameServiceWarden.Core.Tests/XUnitLogger.cs index a73b71a..520149c 100644 --- a/tests/GameServiceWarden.Core.Tests/XUnitLogger.cs +++ b/tests/GameServiceWarden.Core.Tests/XUnitLogger.cs @@ -1,12 +1,12 @@ using System; -using GameServiceWarden.Core.Logging; +using SimpleLogger; using Xunit.Abstractions; namespace GameServiceWarden.Core.Tests { public class XUnitLogger : ILogReceiver { - public LogLevel Level => LogLevel.DEBUG; + public LogLevel Level => LogLevel.Debug; public string Identifier => GetType().Name;