public static void Log(object sender, LogEventArgs e) { if (!System.Console.IsOutputRedirected) { XConsole.Color foreColor = XConsole.Color.Reset; switch (e.Level) { case LogLevel.Debug: foreColor = XConsole.Color.Blue; break; case LogLevel.Info: foreColor = XConsole.Color.Reset; break; case LogLevel.Warning: foreColor = XConsole.Color.Yellow; break; case LogLevel.Error: foreColor = XConsole.Color.Red; break; } string reset = XConsole.ResetStyle(); string style = XConsole.GetForeStyle(foreColor); StringBuilder write = new StringBuilder(); if (string.IsNullOrWhiteSpace(e.Name)) { write.Append(e.Text.Split(Utility.CharNewLine) .Select(x => string.Format($"[{{0}} {style}{{1}}{reset}]: {{2}}", Utility.GetTimeString(DateTime.Now), e.LevelText, x)) .Join(Environment.NewLine)); } else { write.Append(e.Text.Split(Utility.CharNewLine) .Select(x => string.Format($"[{{0}} {style}{{1}}{reset}][{{2}}]: {{3}}", Utility.GetTimeString(DateTime.Now), e.LevelText, e.Name, x)) .Join(Environment.NewLine)); } XConsole.WriteLine(write); XConsole.Render(true, true); } else { StringBuilder write = new StringBuilder(); if (string.IsNullOrWhiteSpace(e.Name)) { write.Append(e.Text.Split(Utility.CharNewLine) .Select(x => string.Format($"[{{0}} {{1}}]: {{2}}", Utility.GetTimeString(DateTime.Now), e.LevelText, x)) .Join(Environment.NewLine)); } else { write.Append(e.Text.Split(Utility.CharNewLine) .Select(x => string.Format($"[{{0}} {{1}}][{{2}}]: {{3}}", Utility.GetTimeString(DateTime.Now), e.LevelText, e.Name, x)) .Join(Environment.NewLine)); } System.Console.WriteLine(write.ToString()); } }