diff --git a/Entities/LogEntry.cs b/Entities/LogEntry.cs index 7bbb8b9..216ca0e 100644 --- a/Entities/LogEntry.cs +++ b/Entities/LogEntry.cs @@ -1,11 +1,11 @@ -namespace Xorog.Logger.Entities; +namespace Xorog.Logger; public class LogEntry { internal string RawMessage { get; set; } public DateTime TimeOfEvent { get; set; } - public LogLevel LogLevel { get; set; } + public CustomLogLevel LogLevel { get; set; } public string Message { get; set; } public object[] Args { get; set; } public Exception? Exception { get; set; } diff --git a/Entities/StringPart.cs b/Entities/StringPart.cs index bec6aec..6f8cc23 100644 --- a/Entities/StringPart.cs +++ b/Entities/StringPart.cs @@ -1,4 +1,4 @@ -namespace Xorog.Logger.Entities; +namespace Xorog.Logger; internal class StringPart : IDisposable { diff --git a/Enums/CustomLogLevel.cs b/Enums/CustomLogLevel.cs new file mode 100644 index 0000000..42fc1e8 --- /dev/null +++ b/Enums/CustomLogLevel.cs @@ -0,0 +1,14 @@ +namespace Xorog.Logger; + +public enum CustomLogLevel +{ + None, + Fatal, + Error, + Warn, + Info, + Debug, + Debug2, + Trace, + Trace2 +} \ No newline at end of file diff --git a/Enums/LogLevel.cs b/Enums/LogLevel.cs deleted file mode 100644 index 0ff84e1..0000000 --- a/Enums/LogLevel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Xorog.Logger.Enums; - -public enum LogLevel -{ - NONE, - FATAL, - ERROR, - WARN, - INFO, - DEBUG, - DEBUG2, - TRACE, - TRACE2 -} \ No newline at end of file diff --git a/Events/LogMessageEventArgs.cs b/Events/LogMessageEventArgs.cs index 866b949..30fe8fd 100644 --- a/Events/LogMessageEventArgs.cs +++ b/Events/LogMessageEventArgs.cs @@ -1,7 +1,6 @@ -namespace Xorog.Logger; +namespace Xorog.Logger.EventArgs; -public class LogMessageEventArgs : EventArgs +public class LogMessageEventArgs : System.EventArgs { public LogEntry LogEntry { get; set; } - } \ No newline at end of file diff --git a/Global.cs b/Global.cs index 26ca27b..e2658b3 100644 --- a/Global.cs +++ b/Global.cs @@ -4,7 +4,4 @@ global using System.Collections.Generic; global using System.IO; global using System.Linq; global using System.Text; -global using System.Threading.Tasks; -global using Xorog.Logger.Entities; -global using Xorog.Logger.Enums; -global using LogLevel = Xorog.Logger.Enums.LogLevel; \ No newline at end of file +global using System.Threading.Tasks; \ No newline at end of file diff --git a/GlobalSuppressions.cs b/GlobalSuppressions.cs new file mode 100644 index 0000000..67e20ae --- /dev/null +++ b/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~P:Xorog.Logger.LoggerProvider._logger")] diff --git a/Logger.cs b/LoggerClient.cs similarity index 89% rename from Logger.cs rename to LoggerClient.cs index 7b4f1bb..b600eba 100644 --- a/Logger.cs +++ b/LoggerClient.cs @@ -1,24 +1,25 @@ using Newtonsoft.Json; +using Xorog.Logger.EventArgs; namespace Xorog.Logger; #pragma warning disable IDE1006 // Naming Styles -public class Logger : ILogger +public class LoggerClient : ILogger { - internal Logger() { } + internal LoggerClient() { } public LoggerProvider _provider { get; internal set; } private bool loggerStarted = false; - private LogLevel maxLogLevel = LogLevel.DEBUG; + private CustomLogLevel maxLogLevel = CustomLogLevel.Debug; private string FileName = ""; private FileStream OpenedFile { get; set; } internal List LogsToPost = new(); internal List Blacklist = new(); - internal List FileBlackList = new(); + internal List FileBlackList = new(); private Task RunningLogger = null; @@ -32,11 +33,16 @@ public class Logger : ILogger /// The loglevel that should be displayed in the console, does not affect whats written to file /// Clean up old logs before a datetime /// A bool stating if the logger was started - public static Logger StartLogger(string filePath = "", LogLevel level = LogLevel.DEBUG, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false) + public static LoggerClient StartLogger(string filePath = "", CustomLogLevel level = CustomLogLevel.Debug, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false) { + DirectoryInfo directoryInfo = new(new FileInfo(filePath).DirectoryName); + + if (!directoryInfo.Exists) + directoryInfo.Create(); + filePath = filePath.Replace("\\", "/"); - var handler = new Logger(); + var handler = new LoggerClient(); handler._provider = new(handler); if (handler.loggerStarted) @@ -111,19 +117,19 @@ public class Logger : ILogger LogLevelColor = currentLog.LogLevel switch { - LogLevel.TRACE => ConsoleColor.Gray, - LogLevel.DEBUG2 => ConsoleColor.Gray, - LogLevel.DEBUG => ConsoleColor.Gray, - LogLevel.INFO => ConsoleColor.Cyan, - LogLevel.WARN => ConsoleColor.Yellow, - LogLevel.ERROR => ConsoleColor.Red, - LogLevel.FATAL => ConsoleColor.Black, + CustomLogLevel.Trace => ConsoleColor.Gray, + CustomLogLevel.Debug2 => ConsoleColor.Gray, + CustomLogLevel.Debug => ConsoleColor.Gray, + CustomLogLevel.Info => ConsoleColor.Cyan, + CustomLogLevel.Warn => ConsoleColor.Yellow, + CustomLogLevel.Error => ConsoleColor.Red, + CustomLogLevel.Fatal => ConsoleColor.Black, _ => ConsoleColor.Gray }; BackgroundColor = currentLog.LogLevel switch { - LogLevel.FATAL => ConsoleColor.DarkRed, + CustomLogLevel.Fatal => ConsoleColor.DarkRed, _ => ConsoleColor.Black }; @@ -278,7 +284,7 @@ public class Logger : ILogger public void StopLogger() { loggerStarted = false; - maxLogLevel = LogLevel.DEBUG; + maxLogLevel = CustomLogLevel.Debug; FileName = ""; Thread.Sleep(500); @@ -306,7 +312,7 @@ public class Logger : ILogger /// Add blacklisted log level to not save /// /// The log levels not to save to the log file - public void AddLogLevelBlacklist(params LogLevel[] levels) + public void AddLogLevelBlacklist(params CustomLogLevel[] levels) { for (int i = 0; i < levels.Length; i++) { @@ -318,7 +324,7 @@ public class Logger : ILogger /// Changes the log level /// /// The new log level to apply - public void ChangeLogLevel(LogLevel level) => maxLogLevel = level; + public void ChangeLogLevel(CustomLogLevel level) => maxLogLevel = level; /// /// Log with none log level @@ -329,7 +335,7 @@ public class Logger : ILogger public void LogNone(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.NONE, + LogLevel = CustomLogLevel.None, RawMessage = message, Args = args, Exception = exception @@ -343,7 +349,7 @@ public class Logger : ILogger public void LogNone(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.NONE, + LogLevel = CustomLogLevel.None, RawMessage = message, Exception = exception }); @@ -356,7 +362,7 @@ public class Logger : ILogger public void LogNone(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.NONE, + LogLevel = CustomLogLevel.None, RawMessage = message, Args = args }); @@ -370,7 +376,7 @@ public class Logger : ILogger public void LogTrace(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.TRACE, + LogLevel = CustomLogLevel.Trace, RawMessage = message, Args = args, Exception = exception @@ -384,7 +390,7 @@ public class Logger : ILogger public void LogTrace(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.TRACE, + LogLevel = CustomLogLevel.Trace, RawMessage = message, Exception = exception }); @@ -397,7 +403,7 @@ public class Logger : ILogger public void LogTrace(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.TRACE, + LogLevel = CustomLogLevel.Trace, RawMessage = message, Args = args, }); @@ -411,7 +417,7 @@ public class Logger : ILogger public void LogDebug2(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG2, + LogLevel = CustomLogLevel.Debug2, RawMessage = message, Args = args, Exception = exception @@ -425,7 +431,7 @@ public class Logger : ILogger public void LogDebug2(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG2, + LogLevel = CustomLogLevel.Debug2, RawMessage = message, Exception = exception }); @@ -438,7 +444,7 @@ public class Logger : ILogger public void LogDebug2(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG2, + LogLevel = CustomLogLevel.Debug2, RawMessage = message, Args = args }); @@ -452,7 +458,7 @@ public class Logger : ILogger public void LogDebug(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG, + LogLevel = CustomLogLevel.Debug, RawMessage = message, Args = args, Exception = exception @@ -466,7 +472,7 @@ public class Logger : ILogger public void LogDebug(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG, + LogLevel = CustomLogLevel.Debug, RawMessage = message, Exception = exception }); @@ -479,7 +485,7 @@ public class Logger : ILogger public void LogDebug(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.DEBUG, + LogLevel = CustomLogLevel.Debug, RawMessage = message, Args = args }); @@ -493,7 +499,7 @@ public class Logger : ILogger public void LogInfo(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.INFO, + LogLevel = CustomLogLevel.Info, RawMessage = message, Args = args, Exception = exception @@ -507,7 +513,7 @@ public class Logger : ILogger public void LogInfo(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.INFO, + LogLevel = CustomLogLevel.Info, RawMessage = message, Exception = exception }); @@ -520,7 +526,7 @@ public class Logger : ILogger public void LogInfo(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.INFO, + LogLevel = CustomLogLevel.Info, RawMessage = message, Args = args }); @@ -534,7 +540,7 @@ public class Logger : ILogger public void LogWarn(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.WARN, + LogLevel = CustomLogLevel.Warn, RawMessage = message, Args = args, Exception = exception @@ -548,7 +554,7 @@ public class Logger : ILogger public void LogWarn(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.WARN, + LogLevel = CustomLogLevel.Warn, RawMessage = message, Exception = exception }); @@ -561,7 +567,7 @@ public class Logger : ILogger public void LogWarn(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.WARN, + LogLevel = CustomLogLevel.Warn, RawMessage = message, Args = args }); @@ -575,7 +581,7 @@ public class Logger : ILogger public void LogError(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.ERROR, + LogLevel = CustomLogLevel.Error, RawMessage = message, Args = args, Exception = exception @@ -589,7 +595,7 @@ public class Logger : ILogger public void LogError(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.ERROR, + LogLevel = CustomLogLevel.Error, RawMessage = message, Exception = exception }); @@ -602,7 +608,7 @@ public class Logger : ILogger public void LogError(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.ERROR, + LogLevel = CustomLogLevel.Error, RawMessage = message, Args = args }); @@ -616,7 +622,7 @@ public class Logger : ILogger public void LogFatal(string message, Exception? exception = null, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.FATAL, + LogLevel = CustomLogLevel.Fatal, RawMessage = message, Args = args, Exception = exception @@ -630,7 +636,7 @@ public class Logger : ILogger public void LogFatal(string message, Exception? exception = null) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.FATAL, + LogLevel = CustomLogLevel.Fatal, RawMessage = message, Exception = exception }); @@ -643,7 +649,7 @@ public class Logger : ILogger public void LogFatal(string message, params object[] args) => LogsToPost.Add(new LogEntry { TimeOfEvent = DateTime.Now, - LogLevel = LogLevel.FATAL, + LogLevel = CustomLogLevel.Fatal, RawMessage = message, Args = args }); @@ -662,14 +668,14 @@ public class Logger : ILogger TimeOfEvent = DateTime.Now, LogLevel = logLevel switch { - Microsoft.Extensions.Logging.LogLevel.Debug => LogLevel.DEBUG2, - Microsoft.Extensions.Logging.LogLevel.Trace => LogLevel.TRACE2, - Microsoft.Extensions.Logging.LogLevel.Information => LogLevel.INFO, - Microsoft.Extensions.Logging.LogLevel.Warning => LogLevel.WARN, - Microsoft.Extensions.Logging.LogLevel.Error => LogLevel.ERROR, - Microsoft.Extensions.Logging.LogLevel.Critical => LogLevel.FATAL, - Microsoft.Extensions.Logging.LogLevel.None => LogLevel.NONE, - _ => LogLevel.NONE, + Microsoft.Extensions.Logging.LogLevel.Debug => CustomLogLevel.Debug2, + Microsoft.Extensions.Logging.LogLevel.Trace => CustomLogLevel.Trace2, + Microsoft.Extensions.Logging.LogLevel.Information => CustomLogLevel.Info, + Microsoft.Extensions.Logging.LogLevel.Warning => CustomLogLevel.Warn, + Microsoft.Extensions.Logging.LogLevel.Error => CustomLogLevel.Error, + Microsoft.Extensions.Logging.LogLevel.Critical => CustomLogLevel.Fatal, + Microsoft.Extensions.Logging.LogLevel.None => CustomLogLevel.None, + _ => CustomLogLevel.None, }, RawMessage = $"[{eventId.Id}] {formatter(state, exception)}", Exception = exception diff --git a/LoggerProvider.cs b/LoggerProvider.cs index eb0ad30..2471ee6 100644 --- a/LoggerProvider.cs +++ b/LoggerProvider.cs @@ -1,21 +1,14 @@ -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -#pragma warning disable IDE1006 // Naming Styles -namespace Xorog.Logger; +namespace Xorog.Logger; + public class LoggerProvider : ILoggerProvider { - internal LoggerProvider(Logger logger) + internal LoggerProvider(LoggerClient logger) { _logger = logger; } - private Logger _logger { get; set; } + private LoggerClient _logger { get; set; } public ILogger CreateLogger(string categoryName) {