예제 #1
0
        /// <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);
                }
            }
        }