using System; using System.Diagnostics; namespace Holo { /// /// Provides interface output related functions, such as logging activities. /// public static class Out { /// /// Enum with flags for log importancies. If 'minimumImportance' flag is higher than the action to be logged, then the action won't be logged. /// public enum logFlags{ImportantAction = 3, StandardAction = 2, BelowStandardAction = 1, MehAction = 0} /// /// Flag for minimum importance in logs. Adjust this to don't print less important logs. /// public static logFlags minimumImportance; /// /// Prints a green line of log, together with timestamp and method name. /// /// The log line to be printed. public static void WriteLine(string logText) { DateTime _DTN = DateTime.Now; Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Prints a green line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this log line. public static void WriteLine(string logText, logFlags logFlag) { if ((int)logFlag < (int)minimumImportance) return; DateTime _DTN = DateTime.Now; Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Prints a customizeable line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this log line. /// The color to use on the left. /// The color to use on the right. public static void WriteLine(string logText, logFlags logFlag, ConsoleColor colorOne, ConsoleColor colorTwo) { if ((int)logFlag < (int)minimumImportance) return; DateTime _DTN = DateTime.Now; Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = colorTwo; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } public static void WriteTrace(string logText) { //return; //if ((int)logFlags.MehAction < (int)minimumImportance) // return; //DateTime _DTN = DateTime.Now; //Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); //Console.ForegroundColor = ConsoleColor.DarkMagenta; //Console.WriteLine(logText); //Console.ForegroundColor = ConsoleColor.Gray; } /// /// Prints a red, error line of log, together with timestamp and method name. /// /// The log line to be printed. public static void WriteError(string logText) { DateTime _DTN = DateTime.Now; Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Prints a red,error line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this error. public static void WriteError(string logText, logFlags logFlag) { if ((int)logFlag < (int)minimumImportance) return; DateTime _DTN = DateTime.Now; Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Writes a plain text line. /// /// The log line to be printed. public static void WritePlain(string logText) { Console.WriteLine(logText); } /// /// Writes a blank line. /// public static void WriteBlank() { Console.WriteLine(); } /// /// Writes a special line of log, with customizeable colors and header coloring of logText. /// /// The log line to be printed. /// The importance flag of this log line. /// The color to use on the left. /// The color to use on the right. /// The string to use infront of logText. /// The length of the header to color. /// The color for the header in the logText. public static void WriteSpecialLine(string logText, logFlags logFlag, ConsoleColor colorOne, ConsoleColor colorTwo, string headerHead, int headerLength, ConsoleColor headerColor) { if ((int)logFlag < (int)minimumImportance) return; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] "); Console.ForegroundColor = headerColor; Console.Write(logText.Substring(0, headerLength)); Console.ForegroundColor = colorTwo; Console.WriteLine(logText.Substring(headerLength)); Console.ForegroundColor = ConsoleColor.Gray; } } }