aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Core/Logging.cs192
-rw-r--r--Ryujinx.Core/OsHle/Svc/SvcSystem.cs2
2 files changed, 130 insertions, 64 deletions
diff --git a/Ryujinx.Core/Logging.cs b/Ryujinx.Core/Logging.cs
index 89064ccb..b4cd5349 100644
--- a/Ryujinx.Core/Logging.cs
+++ b/Ryujinx.Core/Logging.cs
@@ -2,6 +2,7 @@
using System;
using System.Diagnostics;
using System.IO;
+using System.Runtime.CompilerServices;
using System.Text;
namespace Ryujinx.Core
@@ -12,15 +13,25 @@ namespace Ryujinx.Core
private const string LogFileName = "Ryujinx.log";
- private static bool EnableInfo = Config.LoggingEnableInfo;
- private static bool EnableTrace = Config.LoggingEnableTrace;
- private static bool EnableDebug = Config.LoggingEnableDebug;
- private static bool EnableWarn = Config.LoggingEnableWarn;
- private static bool EnableError = Config.LoggingEnableError;
- private static bool EnableFatal = Config.LoggingEnableFatal;
- private static bool EnableIpc = Config.LoggingEnableIpc;
+ private static bool EnableInfo = Config.LoggingEnableInfo;
+ private static bool EnableTrace = Config.LoggingEnableTrace;
+ private static bool EnableDebug = Config.LoggingEnableDebug;
+ private static bool EnableWarn = Config.LoggingEnableWarn;
+ private static bool EnableError = Config.LoggingEnableError;
+ private static bool EnableFatal = Config.LoggingEnableFatal;
+ private static bool EnableIpc = Config.LoggingEnableIpc;
private static bool EnableLogFile = Config.LoggingEnableLogFile;
+ private enum LogLevel
+ {
+ Debug = 1,
+ Error = 2,
+ Fatal = 3,
+ Info = 4,
+ Trace = 5,
+ Warn = 6
+ }
+
static Logging()
{
if (File.Exists(LogFileName)) File.Delete(LogFileName);
@@ -30,14 +41,42 @@ namespace Ryujinx.Core
ExecutionTime.Start();
}
- public static string GetExecutionTime()
- {
- return ExecutionTime.ElapsedMilliseconds.ToString().PadLeft(8, '0') + "ms";
- }
+ public static string GetExecutionTime() => ExecutionTime.ElapsedMilliseconds.ToString().PadLeft(8, '0') + "ms";
- private static string WhoCalledMe()
+ private static void LogMessage(LogEntry LogEntry)
{
- return new StackTrace().GetFrame(2).GetMethod().Name;
+ ConsoleColor consoleColor = ConsoleColor.White;
+
+ switch (LogEntry.LogLevel)
+ {
+ case LogLevel.Debug:
+ consoleColor = ConsoleColor.Gray;
+ break;
+ case LogLevel.Error:
+ consoleColor = ConsoleColor.Red;
+ break;
+ case LogLevel.Fatal:
+ consoleColor = ConsoleColor.Magenta;
+ break;
+ case LogLevel.Info:
+ consoleColor = ConsoleColor.White;
+ break;
+ case LogLevel.Trace:
+ consoleColor = ConsoleColor.DarkGray;
+ break;
+ case LogLevel.Warn:
+ consoleColor = ConsoleColor.Yellow;
+ break;
+ }
+
+ string Text = $"{LogEntry.ExecutionTime} | {LogEntry.LogLevel.ToString()} > " +
+ $"{LogEntry.CallingMember}:{LogEntry.CallingLineNumber} > {LogEntry.Message}";
+
+ Console.ForegroundColor = consoleColor;
+ Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
+ Console.ResetColor();
+
+ LogFile(Text);
}
private static void LogFile(string Message)
@@ -51,87 +90,105 @@ namespace Ryujinx.Core
}
}
- public static void Info(string Message)
+ public static void Info(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableInfo)
{
- string Text = $"{GetExecutionTime()} | INFO > {Message}";
-
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Info,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
-
- public static void Trace(string Message)
+
+ public static void Trace(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableTrace)
{
- string Text = $"{GetExecutionTime()} | TRACE > {WhoCalledMe()} - {Message}";
-
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Trace,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
- public static void Debug(string Message)
+ public static void Debug(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableDebug)
{
- string Text = $"{GetExecutionTime()} | DEBUG > {WhoCalledMe()} - {Message}";
-
- Console.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Debug,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
- public static void Warn(string Message)
+ public static void Warn(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableWarn)
{
- string Text = $"{GetExecutionTime()} | WARN > {WhoCalledMe()} - {Message}";
-
- Console.ForegroundColor = ConsoleColor.Yellow;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Warn,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
- public static void Error(string Message)
+ public static void Error(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableError)
{
- string Text = $"{GetExecutionTime()} | ERROR > {WhoCalledMe()} - {Message}";
-
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Error,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
- public static void Fatal(string Message)
+ public static void Fatal(string Message,
+ [CallerMemberName] string CallingMember = "",
+ [CallerLineNumber] int CallingLineNumber = 0)
{
if (EnableFatal)
{
- string Text = $"{GetExecutionTime()} | FATAL > {WhoCalledMe()} - {Message}";
-
- Console.ForegroundColor = ConsoleColor.Magenta;
- Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
- Console.ResetColor();
-
- LogFile(Text);
+ LogMessage(new LogEntry
+ {
+ CallingLineNumber = CallingLineNumber,
+ CallingMember = CallingMember,
+ LogLevel = LogLevel.Fatal,
+ Message = Message,
+ ExecutionTime = GetExecutionTime()
+ });
}
}
@@ -208,5 +265,14 @@ namespace Ryujinx.Core
}
return result.ToString();
}
- }
+
+ private struct LogEntry
+ {
+ public string CallingMember;
+ public string ExecutionTime;
+ public string Message;
+ public int CallingLineNumber;
+ public LogLevel LogLevel;
+ }
+ }
}
diff --git a/Ryujinx.Core/OsHle/Svc/SvcSystem.cs b/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
index 0b5c97e3..68eebc88 100644
--- a/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
+++ b/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
@@ -221,7 +221,7 @@ namespace Ryujinx.Core.OsHle.Svc
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, Size);
- Logging.Info($"SvcOutputDebugString: {Str}");
+ Logging.Info(Str);
ThreadState.X0 = 0;
}