using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Collections.Concurrent; namespace RemSox.Logging { public class InMemoryLogger : ILogger { readonly ConcurrentBag logs = []; public void Log(string message, LogSeverity severity) { logs.Add(new LogEntry(message, severity, DateTimeOffset.UtcNow)); } public void LogError(string message) { Log(message, LogSeverity.Error); } public void LogInfo(string message) { Log(message, LogSeverity.Info); } public void LogWarning(string message) { Log(message, LogSeverity.Warning); } public IEnumerable GetLogs(int? count = null) { IEnumerable orderedLogs = logs.OrderBy(l => l.Timestamp); return count.HasValue ? orderedLogs.TakeLast(count.Value) : orderedLogs; } } }