diff options
Diffstat (limited to 'Ryujinx.Common/Logging')
| -rw-r--r-- | Ryujinx.Common/Logging/LogEventArgs.cs | 24 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/Logger.cs | 81 |
2 files changed, 68 insertions, 37 deletions
diff --git a/Ryujinx.Common/Logging/LogEventArgs.cs b/Ryujinx.Common/Logging/LogEventArgs.cs index 7a479b71..363a45b9 100644 --- a/Ryujinx.Common/Logging/LogEventArgs.cs +++ b/Ryujinx.Common/Logging/LogEventArgs.cs @@ -4,16 +4,28 @@ namespace Ryujinx.Common.Logging { public class LogEventArgs : EventArgs { - public LogLevel Level { get; private set; } - public TimeSpan Time { get; private set; } + public LogLevel Level { get; private set; } + public TimeSpan Time { get; private set; } + public int ThreadId { get; private set; } public string Message { get; private set; } + public object Data { get; private set; } - public LogEventArgs(LogLevel Level, TimeSpan Time, string Message) + public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message) { - this.Level = Level; - this.Time = Time; - this.Message = Message; + this.Level = level; + this.Time = time; + this.ThreadId = threadId; + this.Message = message; + } + + public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message, object data) + { + this.Level = level; + this.Time = time; + this.ThreadId = threadId; + this.Message = message; + this.Data = data; } } }
\ No newline at end of file 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)); } } |
