aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Core/Logging.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Core/Logging.cs')
-rw-r--r--Ryujinx.Core/Logging.cs132
1 files changed, 132 insertions, 0 deletions
diff --git a/Ryujinx.Core/Logging.cs b/Ryujinx.Core/Logging.cs
new file mode 100644
index 00000000..e14e5587
--- /dev/null
+++ b/Ryujinx.Core/Logging.cs
@@ -0,0 +1,132 @@
+using System;
+using System.Diagnostics;
+using System.IO;
+
+namespace Ryujinx.Core
+{
+ public static class Logging
+ {
+ private static Stopwatch ExecutionTime = new Stopwatch();
+ private const string LogFileName = "Ryujinx.log";
+
+ public static bool EnableInfo = Config.LoggingEnableInfo;
+ public static bool EnableTrace = Config.LoggingEnableTrace;
+ public static bool EnableDebug = Config.LoggingEnableDebug;
+ public static bool EnableWarn = Config.LoggingEnableWarn;
+ public static bool EnableError = Config.LoggingEnableError;
+ public static bool EnableFatal = Config.LoggingEnableFatal;
+ public static bool EnableLogFile = Config.LoggingEnableLogFile;
+
+ static Logging()
+ {
+ ExecutionTime.Start();
+
+ if (File.Exists(LogFileName)) File.Delete(LogFileName);
+ }
+
+ public static string GetExecutionTime()
+ {
+ return ExecutionTime.ElapsedMilliseconds.ToString().PadLeft(8, '0') + "ms";
+ }
+
+ private static string WhoCalledMe()
+ {
+ return new StackTrace().GetFrame(2).GetMethod().Name;
+ }
+
+ private static void LogFile(string Message)
+ {
+ if (EnableLogFile)
+ {
+ using (StreamWriter Writer = File.AppendText(LogFileName))
+ {
+ Writer.WriteLine(Message);
+ }
+ }
+ }
+
+ public static void Info(string Message)
+ {
+ if (EnableInfo)
+ {
+ string Text = $"{GetExecutionTime()} | INFO > {Message}";
+
+ Console.ForegroundColor = ConsoleColor.White;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+
+ public static void Trace(string Message)
+ {
+ if (EnableTrace)
+ {
+ string Text = $"{GetExecutionTime()} | TRACE > {WhoCalledMe()} - {Message}";
+
+ Console.ForegroundColor = ConsoleColor.DarkGray;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+
+ public static void Debug(string Message)
+ {
+ if (EnableDebug)
+ {
+ string Text = $"{GetExecutionTime()} | DEBUG > {WhoCalledMe()} - {Message}";
+
+ Console.ForegroundColor = ConsoleColor.Gray;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+
+ public static void Warn(string Message)
+ {
+ if (EnableWarn)
+ {
+ string Text = $"{GetExecutionTime()} | WARN > {WhoCalledMe()} - {Message}";
+
+ Console.ForegroundColor = ConsoleColor.Yellow;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+
+ public static void Error(string Message)
+ {
+ if (EnableError)
+ {
+ string Text = $"{GetExecutionTime()} | ERROR > {WhoCalledMe()} - {Message}";
+
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+
+ public static void Fatal(string Message)
+ {
+ if (EnableFatal)
+ {
+ string Text = $"{GetExecutionTime()} | FATAL > {WhoCalledMe()} - {Message}";
+
+ Console.ForegroundColor = ConsoleColor.Magenta;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
+ }
+ }
+ }
+}