示例#1
0
 public static void log(String text, loglevel level)
 {
     //if (level >= logginglevel)
     file.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " | " + level.ToString() + " | " + text);
     file.Flush();
 }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="text"></param>
        /// <param name="level"></param>
        /// <param name="colour"></param>
        /// <param name="noLineBreak"></param>
        /// <param name="banner"></param>
        /// <param name="pause"></param>
        /// <param name="skipheader"></param>
        /// <param name="skipLevel">Levels of the stack to skip when getting the calling class</param>
        public void log(string text, loglevel level = loglevel.normal, ConsoleColor colour = ConsoleColor.White, bool noLineBreak = false, bool banner = false, bool pause = false, bool skipheader = false, int skipLevel = 1)
        {
            //TODO - add exceptions into the log.

            //check logfile correct
            if (initialised && Roboto.Settings.enableFileLogging && DateTime.Now > currentLogFileDate.AddHours(Roboto.Settings.rotateLogsEveryXHours))
            {
                initialised = false;
                try
                {
                    log("Rotating Logs", loglevel.warn, ConsoleColor.White, false, true);
                    finalise();
                    initialise();
                }
                catch (Exception e)
                {
                    initialised = false;
                    log("Error rotating logs! File logging disabled. " + e.ToString(), loglevel.critical);
                }
            }

            if (logLastFlushed < DateTime.Now.AddMinutes(-5))
            {
                textWriter.Flush();
                logLastFlushed = DateTime.Now;
                log("Flushed logfile", loglevel.low);
            }


            StackFrame frame      = new StackFrame(skipLevel);
            var        method     = frame.GetMethod();
            string     classtype  = method.DeclaringType.ToString();
            string     methodName = method.Name;



            //guess colour
            if (colour == ConsoleColor.White)
            {
                switch (level)
                {
                case loglevel.verbose:
                    colour = ConsoleColor.Gray;
                    break;

                case loglevel.low:
                    colour = ConsoleColor.DarkGreen;
                    break;

                case loglevel.normal:
                    colour = ConsoleColor.Cyan;
                    break;

                case loglevel.warn:
                    colour = ConsoleColor.Magenta;
                    break;

                case loglevel.high:
                    colour = ConsoleColor.Yellow;
                    if (initialised)
                    {
                        Roboto.Settings.stats.logStat(new statItem("High Errors", typeof(logging)));
                    }
                    break;

                case loglevel.critical:
                    colour = ConsoleColor.Red;
                    if (initialised)
                    {
                        Roboto.Settings.stats.logStat(new statItem("Critical Errors", typeof(logging)));
                    }
                    break;
                }
            }

            Console.ForegroundColor = colour;

            if (noLineBreak)
            {
                write(text);
                followOnLine = true;
            }
            else
            {
                //clear any trailing lines from write's instead of writelines
                if (followOnLine)
                {
                    writeLine("");
                    followOnLine = false;
                }
                //add our time and module stamps
                string outputString = "";
                if (banner == false && skipheader == false)
                {
                    outputString += DateTime.Now.ToString("dd-MM-yyyy  HH:mm:ss") + " - "
                                    + level.ToString().Substring(0, 2).ToUpper() + " - "
                                    + (classtype.ToString() + ":" + methodName).PadRight(45)
                                    + " - ";
                }
                else
                {
                    outputString += "".PadRight(53);
                }

                //add the main text
                outputString += text;

                //add a row of *** for a banner
                if (banner)
                {
                    writeLine("".PadLeft(Console.WindowWidth - 1, bannerChar));
                }
                //write the main line
                writeLine(outputString);
                //another row of ***
                if (banner)
                {
                    writeLine("".PadLeft(Console.WindowWidth - 1, bannerChar));
                }
                //pause if needed
                if (pause)
                {
                    writeLine("Press any key to continue");
                    Console.ReadKey();
                }
            }
            Console.ResetColor();
        }
示例#3
0
 public static void log(String text, loglevel level)
 {
     //if (level >= logginglevel)
     file.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " | " + level.ToString() + " | " + text);
     file.Flush();
 }
示例#4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="text"></param>
        /// <param name="level"></param>
        /// <param name="colour"></param>
        /// <param name="noLineBreak"></param>
        /// <param name="banner"></param>
        /// <param name="pause"></param>
        /// <param name="skipheader"></param>
        /// <param name="skipLevel">Levels of the stack to skip when getting the calling class</param>
        public void log(string text, loglevel level = loglevel.normal, ConsoleColor colour = ConsoleColor.White, bool noLineBreak = false, bool banner = false, bool pause = false, bool skipheader = false, int skipLevel = 1)
        {
            //TODO - add exceptions into the log.

            //check logfile correct
            if (initialised && Roboto.Settings.enableFileLogging && DateTime.Now > currentLogFileDate.AddHours(Roboto.Settings.rotateLogsEveryXHours))
            {
                initialised = false;
                try
                {
                    log("Rotating Logs", loglevel.warn, ConsoleColor.White, false, true);
                    finalise();
                    initialise();
                }
                catch (Exception e)
                {
                    initialised = false;
                    log("Error rotating logs! File logging disabled. " + e.ToString(), loglevel.critical);
                }
            }

            StackFrame frame = new StackFrame(skipLevel);
            var method = frame.GetMethod();
            string classtype = method.DeclaringType.ToString();
            string methodName = method.Name;

            //guess colour
            if (colour == ConsoleColor.White)
            {
                switch(level)
                {
                    case loglevel.verbose:
                        colour = ConsoleColor.Gray;
                        break;
                    case loglevel.low:
                        colour = ConsoleColor.DarkGreen;
                        break;
                    case loglevel.normal:
                        colour = ConsoleColor.Blue;
                        break;
                    case loglevel.warn:
                        colour = ConsoleColor.Magenta;
                        break;
                    case loglevel.high:
                        colour = ConsoleColor.Yellow;
                        if (initialised)
                        {
                            Roboto.Settings.stats.logStat(new statItem("High Errors", typeof(logging)));
                        }
                        break;
                    case loglevel.critical:
                        colour = ConsoleColor.Red;
                        if (initialised)
                        {
                            Roboto.Settings.stats.logStat(new statItem("Critical Errors", typeof(logging)));
                        }
                        break;
                }
            }

            Console.ForegroundColor = colour;

            if (noLineBreak)
            {
                write(text);
                followOnLine = true;
            }
            else
            {
                //clear any trailing lines from write's instead of writelines
                if (followOnLine)
                {
                    writeLine("");
                    followOnLine = false;
                }
                //add our time and module stamps
                string outputString = "";
                if (banner == false && skipheader == false)
                {
                    outputString += DateTime.Now.ToString("dd-MM-yyyy  HH:mm:ss") + " - "
                        + level.ToString().Substring(0,2).ToUpper() + " - "
                        + (classtype.ToString()  + ":" + methodName).PadRight(45)
                        +  " - ";
                }
                else
                {
                    outputString += "".PadRight(53);
                }

                //add the main text
                outputString +=  text;

                //add a row of *** for a banner
                if (banner) { writeLine("".PadLeft(Console.WindowWidth-1, bannerChar)); }
                //write the main line
                writeLine(outputString);
                //another row of ***
                if (banner) { writeLine("".PadLeft(Console.WindowWidth-1, bannerChar)); }
                //pause if needed
                if (pause)
                {
                    writeLine("Press any key to continue");
                    Console.ReadKey();
                }

            }
            Console.ResetColor();
        }