public async Task LogAsync(LogSeverity severity, string message) { await _semaphore.WaitAsync(); try { var formattedTime = DateTimeOffset.UtcNow.ToString("hh:mm:ss"); await Console.Out.WriteAsync($"{formattedTime} "); await ColoredConsole.WriteAsync($"[{severity}]", GetSeverityColor(severity)); await Console.Out.WriteLineAsync($" {message}"); await File.AppendAllTextAsync(LogFileName(severity), $"{formattedTime} [{severity}] {message}\n"); } finally { _semaphore.Release(); } }