/// <summary> /// /// </summary> /// <param name="message"></param> /// <param name="name"></param> /// <param name="level"></param> public override void Log(string message, string name, Level level) { lock (lockObj) { Color levelColor; switch (level) { case Level.Info: levelColor = Color.PapayaWhip; break; case Level.Debug: levelColor = Color.DarkGray; break; case Level.Warn: levelColor = Color.Yellow; break; case Level.Error: levelColor = Color.Orange; break; case Level.Fatal: levelColor = Color.Red; break; default: levelColor = Color.LightGray; break; } Formatter[] data = new Formatter[] { new Formatter("[", Color.LightGray), new Formatter(DateTime.Now, Color.DarkGray), new Formatter("]", Color.LightGray), new Formatter(String.Format("{0,-5}", level), levelColor), null, new Formatter(String.Format("{0,33}", " "), levelColor) }; if (message.Length > Console.WindowWidth - 35) { string[] splitMessage = WordWrap(message, Console.WindowWidth - 35).TrimEnd('\n').Split('\n'); data.Append(null); bool firstLine = true; foreach (string mes in splitMessage) { data[4] = new Formatter(mes.Trim(' '), Color.White); if (firstLine) { Console.WriteLineFormatted("{0}{1}{2} | {3} | {4}", Color.LightGray, data); firstLine = false; } else { Console.WriteLineFormatted("{5} | {4}", Color.LightGray, data); } } } else { data[4] = new Formatter(message, Color.White); Console.WriteLineFormatted("{0}{1}{2} | {3} | {4} ", Color.LightGray, data); } } }