diff options
Diffstat (limited to 'Ryujinx.Common/Logging/Logger.cs')
-rw-r--r-- | Ryujinx.Common/Logging/Logger.cs | 81 |
1 files changed, 50 insertions, 31 deletions
diff --git a/Ryujinx.Common/Logging/Logger.cs b/Ryujinx.Common/Logging/Logger.cs index 6422f113..5e58f806 100644 --- a/Ryujinx.Common/Logging/Logger.cs +++ b/Ryujinx.Common/Logging/Logger.cs @@ -1,78 +1,97 @@ using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; namespace Ryujinx.Common.Logging { public static class Logger { - private static bool[] EnabledLevels; - private static bool[] EnabledClasses; + private static Stopwatch m_Time; - public static event EventHandler<LogEventArgs> Updated; + private static readonly bool[] m_EnabledLevels; + private static readonly bool[] m_EnabledClasses; - private static Stopwatch Time; + public static event EventHandler<LogEventArgs> Updated; static Logger() { - EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length]; - EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length]; + m_EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length]; + m_EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length]; - EnabledLevels[(int)LogLevel.Stub] = true; - EnabledLevels[(int)LogLevel.Info] = true; - EnabledLevels[(int)LogLevel.Warning] = true; - EnabledLevels[(int)LogLevel.Error] = true; + m_EnabledLevels[(int)LogLevel.Stub] = true; + m_EnabledLevels[(int)LogLevel.Info] = true; + m_EnabledLevels[(int)LogLevel.Warning] = true; + m_EnabledLevels[(int)LogLevel.Error] = true; - for (int Index = 0; Index < EnabledClasses.Length; Index++) + for (int index = 0; index < m_EnabledClasses.Length; index++) { - EnabledClasses[Index] = true; + m_EnabledClasses[index] = true; } - Time = new Stopwatch(); + m_Time = Stopwatch.StartNew(); + } + + public static void SetEnable(LogLevel logLevel, bool enabled) + { + m_EnabledLevels[(int)logLevel] = enabled; + } + + public static void SetEnable(LogClass logClass, bool enabled) + { + m_EnabledClasses[(int)logClass] = enabled; + } - Time.Start(); + public static void PrintDebug(LogClass logClass, string message, [CallerMemberName] string caller = "") + { + Print(LogLevel.Debug, logClass, GetFormattedMessage(logClass, message, caller)); } - public static void SetEnable(LogLevel Level, bool Enabled) + public static void PrintInfo(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - EnabledLevels[(int)Level] = Enabled; + Print(LogLevel.Info, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void SetEnable(LogClass Class, bool Enabled) + public static void PrintWarning(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - EnabledClasses[(int)Class] = Enabled; + Print(LogLevel.Warning, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void PrintDebug(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintError(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - Print(LogLevel.Debug, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Error, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void PrintStub(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintStub(LogClass logClass, string message = "", [CallerMemberName] string caller = "") { - Print(LogLevel.Stub, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed. " + message, caller)); } - public static void PrintInfo(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintStub<T>(LogClass logClass, T obj, [CallerMemberName] string caller = "") { - Print(LogLevel.Info, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed.", caller), obj); } - public static void PrintWarning(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintStub<T>(LogClass logClass, string message, T obj, [CallerMemberName] string caller = "") { - Print(LogLevel.Warning, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed. " + message, caller), obj); } - public static void PrintError(LogClass Class, string Message, [CallerMemberName] string Caller = "") + private static void Print(LogLevel logLevel, LogClass logClass, string message) { - Print(LogLevel.Error, Class, GetFormattedMessage(Class, Message, Caller)); + if (m_EnabledLevels[(int)logLevel] && m_EnabledClasses[(int)logClass]) + { + Updated?.Invoke(null, new LogEventArgs(logLevel, m_Time.Elapsed, Thread.CurrentThread.ManagedThreadId, message)); + } } - private static void Print(LogLevel Level, LogClass Class, string Message) + private static void Print(LogLevel logLevel, LogClass logClass, string message, object data) { - if (EnabledLevels[(int)Level] && EnabledClasses[(int)Class]) + if (m_EnabledLevels[(int)logLevel] && m_EnabledClasses[(int)logClass]) { - Updated?.Invoke(null, new LogEventArgs(Level, Time.Elapsed, Message)); + Updated?.Invoke(null, new LogEventArgs(logLevel, m_Time.Elapsed, Thread.CurrentThread.ManagedThreadId, message, data)); } } |