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;
}
}
}