From 9c5619bee9229e65c3507defd6d0439bceca52d2 Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Mon, 9 Nov 2020 12:32:31 +0400 Subject: [PATCH] Transform logging system into library --- .gitignore | 3 +- src/Zirconium/Core/App.cs | 2 +- src/Zirconium/Core/ConnectionHandler.cs | 6 +- .../Core/Database/DatabaseConnector.cs | 2 +- src/Zirconium/Core/Logging/Log.cs | 50 --------- src/Zirconium/Core/Logging/Logger.cs | 104 ------------------ src/Zirconium/Core/Main.cs | 3 +- src/Zirconium/Core/Plugins/PluginManager.cs | 11 +- src/Zirconium/Core/Router.cs | 2 +- src/Zirconium/Zirconium.csproj | 1 + .../HelloWorldPlugin/HelloWorldPlugin.cs | 2 +- src/ZirconiumPlugins/BasicChat/Plugin.cs | 2 +- .../MessageStorage/Message.cs | 7 ++ .../MessageStorage/MessageStorage.csproj | 14 +++ src/ZirconiumPlugins/MessageStorage/Plugin.cs | 18 +++ src/ZirconiumPlugins/TestMongoDB/Plugin.cs | 2 +- 16 files changed, 58 insertions(+), 171 deletions(-) delete mode 100644 src/Zirconium/Core/Logging/Log.cs delete mode 100644 src/Zirconium/Core/Logging/Logger.cs create mode 100644 src/ZirconiumPlugins/MessageStorage/Message.cs create mode 100644 src/ZirconiumPlugins/MessageStorage/MessageStorage.csproj create mode 100644 src/ZirconiumPlugins/MessageStorage/Plugin.cs diff --git a/.gitignore b/.gitignore index 91ed821..9f1e778 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ bin obj /.plugins /src/ThirdPartyPlugins -.idea \ No newline at end of file +.idea +*.sln \ No newline at end of file diff --git a/src/Zirconium/Core/App.cs b/src/Zirconium/Core/App.cs index 7e3543a..a534cd3 100644 --- a/src/Zirconium/Core/App.cs +++ b/src/Zirconium/Core/App.cs @@ -1,6 +1,6 @@ using Zirconium.Core.Plugins; using Zirconium.Core.Plugins.Interfaces; -using Zirconium.Core.Logging; +using Log4Sharp; using WebSocketSharp.Server; using Zirconium.Core.Database; diff --git a/src/Zirconium/Core/ConnectionHandler.cs b/src/Zirconium/Core/ConnectionHandler.cs index 79c6168..f156a4c 100644 --- a/src/Zirconium/Core/ConnectionHandler.cs +++ b/src/Zirconium/Core/ConnectionHandler.cs @@ -21,14 +21,14 @@ namespace Zirconium.Core protected override void OnClose(CloseEventArgs e) { _app.SessionManager.DeleteSession(ID); - Logging.Log.Info($"Connection {ID} was closed (reason: {e.Reason})"); + Log.Info($"Connection {ID} was closed (reason: {e.Reason})"); // TODO implement closing connection } protected override void OnError(ErrorEventArgs e) { - Logging.Log.Error($"Error occurred: {e.Exception}"); + Log.Error($"Error occurred: {e.Exception}"); } protected override void OnMessage(MessageEventArgs e) @@ -74,7 +74,7 @@ namespace Zirconium.Core session.ClientAddress = ip; session.ConnectionHandler = this; _app.SessionManager.AddSession(this.ID, session); - Logging.Log.Info($"Connection {this.ID} was created"); + Log.Info($"Connection {this.ID} was created"); } public void SendMessage(string message) diff --git a/src/Zirconium/Core/Database/DatabaseConnector.cs b/src/Zirconium/Core/Database/DatabaseConnector.cs index 5bda318..c661c33 100644 --- a/src/Zirconium/Core/Database/DatabaseConnector.cs +++ b/src/Zirconium/Core/Database/DatabaseConnector.cs @@ -1,5 +1,5 @@ using MongoDB.Driver; -using Zirconium.Core.Logging; +using Log4Sharp; namespace Zirconium.Core.Database { diff --git a/src/Zirconium/Core/Logging/Log.cs b/src/Zirconium/Core/Logging/Log.cs deleted file mode 100644 index f9d8687..0000000 --- a/src/Zirconium/Core/Logging/Log.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; - -namespace Zirconium.Core.Logging -{ - public class Log - { - private static Logger _defaultLogger = new Logger("", true, false, true); - private static object loggerMutex = new Object(); - - public static Logger Initialize(string name, bool verbose, bool systemLog) { - var logger = new Logger(name, verbose, systemLog, false); - if (!_defaultLogger.isInitialized) { - lock (loggerMutex) { - if (!_defaultLogger.isInitialized) { - var defLogger = new Logger(name, verbose, systemLog, true); - _defaultLogger = defLogger; - _defaultLogger.isInitialized = true; - } - } - } - return logger; - } - - public static void Close() { - lock (loggerMutex) { - _defaultLogger.Close(); - } - } - - public static void Error(string message) { - _defaultLogger.Error(message); - } - - public static void Warning(string message) { - _defaultLogger.Warning(message); - } - - public static void Fatal(string message) { - _defaultLogger.Fatal(message); - } - - public static void Info(string message) { - _defaultLogger.Info(message); - } - - public static void Debug(string message) { - _defaultLogger.Debug(message); - } - } -} \ No newline at end of file diff --git a/src/Zirconium/Core/Logging/Logger.cs b/src/Zirconium/Core/Logging/Logger.cs deleted file mode 100644 index 9379522..0000000 --- a/src/Zirconium/Core/Logging/Logger.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Diagnostics; -using System; -using System.Drawing; -using Colorful; - -namespace Zirconium.Core.Logging -{ - public class Logger - { - private bool _isVerbose; - private bool _isDefaultLogger; - internal bool isInitialized; - - internal Logger(string name, bool verbose, bool systemLog, bool isDefaultLogger) { - this._isVerbose = verbose; - this._isDefaultLogger = isDefaultLogger; - } - - public void Close() {} - - public void Error(string message) { - writeLog(LogType.Error, message); - } - - public void Warning(string message) { - if (_isVerbose) { - writeLog(LogType.Warning, message); - } - } - - public void Info(string message) { - if (_isVerbose) { - writeLog(LogType.Info, message); - } - } - - public void Debug(string message) { - if (_isVerbose) { - writeLog(LogType.Debug, message); - } - } - - public void Fatal(string message) { - writeLog(LogType.Fatal, message); - System.Environment.Exit(1); - } - - private void writeLog(LogType logType, string message) { - var st = new StackTrace(); - StackFrame stFrame; - if (_isDefaultLogger) { - stFrame = st.GetFrame(3); - } else { - stFrame = st.GetFrame(2); - } - var dateTimeFormatter = new Formatter($"{DateTime.Now}", Color.White); - var frameFormatter = new Formatter($"{stFrame.GetMethod().ReflectedType.FullName}", Color.DeepPink); - - string outputMessage = "[{0}] [{1}] | [{2}]: " + message; - - Formatter tagFormatter = null; - switch (logType) { - case LogType.Error: { - tagFormatter = new Formatter("ERROR", Color.Red); - break; - } - case LogType.Fatal: { - tagFormatter = new Formatter("FATAL", Color.DarkRed); - break; - } - case LogType.Info: { - tagFormatter = new Formatter("INFO", Color.Aqua); - break; - } - case LogType.Warning: { - tagFormatter = new Formatter("WARNING", Color.Yellow); - break; - } - case LogType.Debug: { - tagFormatter = new Formatter("DEBUG", Color.LightGray); - break; - } - default: { - tagFormatter = new Formatter("UNKNOWN", Color.Green); - break; - } - } - var formatters = new Formatter[] { - dateTimeFormatter, - frameFormatter, - tagFormatter - }; - Colorful.Console.WriteLineFormatted(outputMessage, Color.Gray, formatters); - } - - internal enum LogType { - Error, - Fatal, - Info, - Warning, - Debug - } - } -} \ No newline at end of file diff --git a/src/Zirconium/Core/Main.cs b/src/Zirconium/Core/Main.cs index 1ededbd..7e51850 100644 --- a/src/Zirconium/Core/Main.cs +++ b/src/Zirconium/Core/Main.cs @@ -2,7 +2,7 @@ using System.Threading; using CommandLine; using Nett; -using Zirconium.Core.Logging; +using Log4Sharp; namespace Zirconium.Core { @@ -17,6 +17,7 @@ namespace Zirconium.Core static void Main(string[] args) { + Log.SetLogLevel(LogLevel.Debug); string configPath = null; Parser.Default.ParseArguments(args) .WithParsed(o => diff --git a/src/Zirconium/Core/Plugins/PluginManager.cs b/src/Zirconium/Core/Plugins/PluginManager.cs index 2ec453d..339c524 100644 --- a/src/Zirconium/Core/Plugins/PluginManager.cs +++ b/src/Zirconium/Core/Plugins/PluginManager.cs @@ -2,11 +2,10 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Runtime.Loader; using System.Threading; +using Log4Sharp; using McMaster.NETCore.Plugins; using MongoDB.Driver; -using Zirconium.Core.Logging; using Zirconium.Core.Models; using Zirconium.Core.Plugins.Interfaces; using Zirconium.Core.Plugins.IPC; @@ -34,7 +33,7 @@ namespace Zirconium.Core.Plugins var loaders = new List(); if (folderPath == "") { - Logging.Log.Warning("Plugins folder path is not specified!"); + Log.Warning("Plugins folder path is not specified!"); return; } @@ -61,8 +60,8 @@ namespace Zirconium.Core.Plugins var pluginDll = Path.Combine(_currentPluginFolderPath, pluginName, pluginName + ".dll"); if (File.Exists(pluginDll)) { - Logging.Log.Debug("Found plugin " + pluginName); - Logging.Log.Debug("Try to initialize plugin " + pluginName); + Log.Debug("Found plugin " + pluginName); + Log.Debug("Trying to initialize plugin " + pluginName); loader = PluginLoader.CreateFromAssemblyFile( pluginDll, sharedTypes: new[] { @@ -95,7 +94,7 @@ namespace Zirconium.Core.Plugins { // This assumes the implementation of IPlugin has a parameterless constructor plugin = (IPluginAPI)Activator.CreateInstance(pluginType); - Logging.Log.Debug($"Created plugin instance '{plugin.GetPluginUniqueName()}'."); + Log.Info($"Plugin '{plugin.GetPluginUniqueName()}' initialized successfully"); plugin.PreInitialize(this); plugin.Initialize(_pluginHostAPI); } diff --git a/src/Zirconium/Core/Router.cs b/src/Zirconium/Core/Router.cs index b13d597..0608c7f 100644 --- a/src/Zirconium/Core/Router.cs +++ b/src/Zirconium/Core/Router.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using Zirconium.Core.Models; using Zirconium.Core.Plugins.Interfaces; using Zirconium.Utils; -using Zirconium.Core.Logging; +using Log4Sharp; using Newtonsoft.Json; using System.Security.Cryptography; diff --git a/src/Zirconium/Zirconium.csproj b/src/Zirconium/Zirconium.csproj index 90f6b24..acd8dd5 100644 --- a/src/Zirconium/Zirconium.csproj +++ b/src/Zirconium/Zirconium.csproj @@ -6,6 +6,7 @@ + diff --git a/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs b/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs index bae6faa..4800fc5 100644 --- a/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs +++ b/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs @@ -1,6 +1,6 @@ using System; using Newtonsoft.Json; -using Zirconium.Core.Logging; +using Log4Sharp; using Zirconium.Core.Models; using Zirconium.Core.Plugins.Interfaces; diff --git a/src/ZirconiumPlugins/BasicChat/Plugin.cs b/src/ZirconiumPlugins/BasicChat/Plugin.cs index 2580d8d..244b902 100644 --- a/src/ZirconiumPlugins/BasicChat/Plugin.cs +++ b/src/ZirconiumPlugins/BasicChat/Plugin.cs @@ -4,7 +4,7 @@ using Newtonsoft.Json; using Zirconium.Core.Models; using Zirconium.Core.Plugins.Interfaces; using Zirconium.Utils; -using Zirconium.Core.Logging; +using Log4Sharp; namespace BasicChat { diff --git a/src/ZirconiumPlugins/MessageStorage/Message.cs b/src/ZirconiumPlugins/MessageStorage/Message.cs new file mode 100644 index 0000000..19deb03 --- /dev/null +++ b/src/ZirconiumPlugins/MessageStorage/Message.cs @@ -0,0 +1,7 @@ +namespace MessageStorage +{ + public class Message + { + + } +} \ No newline at end of file diff --git a/src/ZirconiumPlugins/MessageStorage/MessageStorage.csproj b/src/ZirconiumPlugins/MessageStorage/MessageStorage.csproj new file mode 100644 index 0000000..2cf1f24 --- /dev/null +++ b/src/ZirconiumPlugins/MessageStorage/MessageStorage.csproj @@ -0,0 +1,14 @@ + + + + netcoreapp3.1 + + + + + runtime + + + + + diff --git a/src/ZirconiumPlugins/MessageStorage/Plugin.cs b/src/ZirconiumPlugins/MessageStorage/Plugin.cs new file mode 100644 index 0000000..924157b --- /dev/null +++ b/src/ZirconiumPlugins/MessageStorage/Plugin.cs @@ -0,0 +1,18 @@ +using System; +using Zirconium.Core.Plugins.Interfaces; + +namespace MessageStorage +{ + public class Plugin : IPluginAPI + { + public void Initialize(IPluginHostAPI pluginHost) + { + throw new NotImplementedException(); + } + + public string GetPluginUniqueName() + { + return "MessageStoragePlugin"; + } + } +} diff --git a/src/ZirconiumPlugins/TestMongoDB/Plugin.cs b/src/ZirconiumPlugins/TestMongoDB/Plugin.cs index 82e6b5f..1dd36ae 100644 --- a/src/ZirconiumPlugins/TestMongoDB/Plugin.cs +++ b/src/ZirconiumPlugins/TestMongoDB/Plugin.cs @@ -3,7 +3,7 @@ using System.Dynamic; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Driver; -using Zirconium.Core.Logging; +using Log4Sharp; using Zirconium.Core.Plugins.Interfaces; namespace TestMongoDB