diff --git a/DiscordBotCore.Logging/ILogger.cs b/DiscordBotCore.Logging/ILogger.cs index 4fa4444..ff6fe7e 100644 --- a/DiscordBotCore.Logging/ILogger.cs +++ b/DiscordBotCore.Logging/ILogger.cs @@ -6,7 +6,6 @@ public interface ILogger void Log(string message); void Log(string message, LogType logType); - void Log(string message, LogType logType, string format); void Log(string message, object sender); void Log(string message, object sender, LogType type); void LogException(Exception exception, object sender, bool logFullStack = false); diff --git a/DiscordBotCore.Logging/Logger.cs b/DiscordBotCore.Logging/Logger.cs index cf1d51b..c8f797c 100644 --- a/DiscordBotCore.Logging/Logger.cs +++ b/DiscordBotCore.Logging/Logger.cs @@ -3,13 +3,21 @@ public sealed class Logger : ILogger { private readonly string _LogFile; - private readonly List _logMessageProperties = typeof(ILogMessage).GetProperties().Select(p => p.Name).ToList(); + private readonly string _LogMessageFormat; + + private readonly List _logMessageProperties = typeof(ILogMessage) + .GetProperties() + .Select(p => p.Name) + .ToList(); + + + public event Action? OnLogReceived; - public string LogMessageFormat { get ; set; } + public Logger(string logFolder, string logMessageFormat) { - this.LogMessageFormat = logMessageFormat; + this._LogMessageFormat = logMessageFormat; this._LogFile = Path.Combine(logFolder, $"{DateTime.Now:yyyy-MM-dd}.log"); } @@ -20,7 +28,7 @@ public sealed class Logger : ILogger /// A formatted string with the message values private string GenerateLogMessage(ILogMessage message) { - string messageAsString = new string(LogMessageFormat); + string messageAsString = new string(_LogMessageFormat); foreach (var prop in _logMessageProperties) { Type messageType = typeof(ILogMessage); @@ -36,35 +44,14 @@ public sealed class Logger : ILogger await streamWriter.WriteLineAsync(message); } - private string GenerateLogMessage(ILogMessage message, string customFormat) + private async void Log(ILogMessage message) { - string messageAsString = customFormat; - foreach (var prop in _logMessageProperties) - { - Type messageType = typeof(ILogMessage); - messageAsString = messageAsString.Replace("{" + prop + "}", messageType.GetProperty(prop)?.GetValue(message)?.ToString()); - } - - return messageAsString; - } - - private void Log(ILogMessage message, string format) - { - string messageAsString = GenerateLogMessage(message, format); + var messageAsString = GenerateLogMessage(message); OnLogReceived?.Invoke(message); - LogToFile(messageAsString); - } - - private void Log(ILogMessage message) - { - string messageAsString = GenerateLogMessage(message); - OnLogReceived?.Invoke(message); - LogToFile(messageAsString); - + await LogToFile(messageAsString); } public void Log(string message) => Log(new LogMessage(message, string.Empty, LogType.Info)); - public void Log(string message, LogType logType, string format) => Log(new LogMessage(message, logType), format); public void Log(string message, LogType logType) => Log(new LogMessage(message, logType)); public void Log(string message, object sender) => Log(new LogMessage(message, sender)); public void Log(string message, object sender, LogType type) => Log(new LogMessage(message, sender, type)); diff --git a/WebUI/Components/Pages/Home.razor b/WebUI/Components/Pages/Home.razor index 46c873a..b1e8a96 100644 --- a/WebUI/Components/Pages/Home.razor +++ b/WebUI/Components/Pages/Home.razor @@ -31,6 +31,8 @@ + + @@ -48,6 +50,7 @@ @code { private bool IsRunning { get; set; } private List _Logs { get; set; } = new(); + private const int MaxLogLines = 1000; protected override void OnInitialized() { @@ -60,6 +63,11 @@ InvokeAsync(async () => { _Logs.Add(obj); + if (_Logs.Count > MaxLogLines) + { + _Logs.RemoveAt(0); + } + StateHasChanged(); await JS.InvokeVoidAsync("scrollToBottom", "consoleLog"); }); @@ -109,4 +117,9 @@ _ => "" }; } + + private void ClearLogs() + { + _Logs.Clear(); + } }