diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2023-03-21 20:14:46 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-21 20:14:46 -0300 |
| commit | ba95ee54abf4905d38f3563881a1643f102993b3 (patch) | |
| tree | 4a17ec5f209e64e4944b7deceec5dbdf1e0d9dc3 /Ryujinx.Common/Logging | |
| parent | 4ce4299ca2a6b11332f2341c69f40efd7205282f (diff) | |
Revert "Use source generated json serializers in order to improve code trimming (#4094)" (#4576)
This reverts commit 4ce4299ca2a6b11332f2341c69f40efd7205282f.
Diffstat (limited to 'Ryujinx.Common/Logging')
| -rw-r--r-- | Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs | 54 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs | 84 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/LogClass.cs | 4 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/LogEventArgs.cs | 10 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/LogEventArgsJson.cs | 30 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs | 9 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/LogLevel.cs | 4 | ||||
| -rw-r--r-- | Ryujinx.Common/Logging/Targets/JsonLogTarget.cs | 12 |
8 files changed, 63 insertions, 144 deletions
diff --git a/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs b/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs index 28a7d546..b9a08323 100644 --- a/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs +++ b/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs @@ -1,20 +1,22 @@ -using System.Text; +using System; +using System.Reflection; +using System.Text; namespace Ryujinx.Common.Logging { internal class DefaultLogFormatter : ILogFormatter { - private static readonly ObjectPool<StringBuilder> StringBuilderPool = SharedPools.Default<StringBuilder>(); + private static readonly ObjectPool<StringBuilder> _stringBuilderPool = SharedPools.Default<StringBuilder>(); public string Format(LogEventArgs args) { - StringBuilder sb = StringBuilderPool.Allocate(); + StringBuilder sb = _stringBuilderPool.Allocate(); try { sb.Clear(); - sb.Append($@"{args.Time:hh\:mm\:ss\.fff}"); + sb.AppendFormat(@"{0:hh\:mm\:ss\.fff}", args.Time); sb.Append($" |{args.Level.ToString()[0]}| "); if (args.ThreadName != null) @@ -25,17 +27,53 @@ namespace Ryujinx.Common.Logging sb.Append(args.Message); - if (args.Data is not null) + if (args.Data != null) { - sb.Append(' '); - DynamicObjectFormatter.Format(sb, args.Data); + PropertyInfo[] props = args.Data.GetType().GetProperties(); + + sb.Append(" {"); + + foreach (var prop in props) + { + sb.Append(prop.Name); + sb.Append(": "); + + if (typeof(Array).IsAssignableFrom(prop.PropertyType)) + { + Array array = (Array)prop.GetValue(args.Data); + foreach (var item in array) + { + sb.Append(item.ToString()); + sb.Append(", "); + } + + if (array.Length > 0) + { + sb.Remove(sb.Length - 2, 2); + } + } + else + { + sb.Append(prop.GetValue(args.Data)); + } + + sb.Append(" ; "); + } + + // We remove the final ';' from the string + if (props.Length > 0) + { + sb.Remove(sb.Length - 3, 3); + } + + sb.Append('}'); } return sb.ToString(); } finally { - StringBuilderPool.Release(sb); + _stringBuilderPool.Release(sb); } } } diff --git a/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs b/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs deleted file mode 100644 index 5f15cc2a..00000000 --- a/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs +++ /dev/null @@ -1,84 +0,0 @@ -#nullable enable -using System; -using System.Reflection; -using System.Text; - -namespace Ryujinx.Common.Logging -{ - internal class DynamicObjectFormatter - { - private static readonly ObjectPool<StringBuilder> StringBuilderPool = SharedPools.Default<StringBuilder>(); - - public static string? Format(object? dynamicObject) - { - if (dynamicObject is null) - { - return null; - } - - StringBuilder sb = StringBuilderPool.Allocate(); - - try - { - Format(sb, dynamicObject); - - return sb.ToString(); - } - finally - { - StringBuilderPool.Release(sb); - } - } - - public static void Format(StringBuilder sb, object? dynamicObject) - { - if (dynamicObject is null) - { - return; - } - - PropertyInfo[] props = dynamicObject.GetType().GetProperties(); - - sb.Append('{'); - - foreach (var prop in props) - { - sb.Append(prop.Name); - sb.Append(": "); - - if (typeof(Array).IsAssignableFrom(prop.PropertyType)) - { - Array? array = (Array?) prop.GetValue(dynamicObject); - - if (array is not null) - { - foreach (var item in array) - { - sb.Append(item); - sb.Append(", "); - } - - if (array.Length > 0) - { - sb.Remove(sb.Length - 2, 2); - } - } - } - else - { - sb.Append(prop.GetValue(dynamicObject)); - } - - sb.Append(" ; "); - } - - // We remove the final ';' from the string - if (props.Length > 0) - { - sb.Remove(sb.Length - 3, 3); - } - - sb.Append('}'); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Common/Logging/LogClass.cs b/Ryujinx.Common/Logging/LogClass.cs index e62676cd..7e53c972 100644 --- a/Ryujinx.Common/Logging/LogClass.cs +++ b/Ryujinx.Common/Logging/LogClass.cs @@ -1,9 +1,5 @@ -using Ryujinx.Common.Utilities; -using System.Text.Json.Serialization; - namespace Ryujinx.Common.Logging { - [JsonConverter(typeof(TypedStringEnumConverter<LogClass>))] public enum LogClass { Application, diff --git a/Ryujinx.Common/Logging/LogEventArgs.cs b/Ryujinx.Common/Logging/LogEventArgs.cs index a27af780..511c8e6e 100644 --- a/Ryujinx.Common/Logging/LogEventArgs.cs +++ b/Ryujinx.Common/Logging/LogEventArgs.cs @@ -11,7 +11,15 @@ namespace Ryujinx.Common.Logging public readonly string Message; public readonly object Data; - public LogEventArgs(LogLevel level, TimeSpan time, string threadName, string message, object data = null) + public LogEventArgs(LogLevel level, TimeSpan time, string threadName, string message) + { + Level = level; + Time = time; + ThreadName = threadName; + Message = message; + } + + public LogEventArgs(LogLevel level, TimeSpan time, string threadName, string message, object data) { Level = level; Time = time; diff --git a/Ryujinx.Common/Logging/LogEventArgsJson.cs b/Ryujinx.Common/Logging/LogEventArgsJson.cs deleted file mode 100644 index 425b9766..00000000 --- a/Ryujinx.Common/Logging/LogEventArgsJson.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Text.Json.Serialization; - -namespace Ryujinx.Common.Logging -{ - internal class LogEventArgsJson - { - public LogLevel Level { get; } - public TimeSpan Time { get; } - public string ThreadName { get; } - - public string Message { get; } - public string Data { get; } - - [JsonConstructor] - public LogEventArgsJson(LogLevel level, TimeSpan time, string threadName, string message, string data = null) - { - Level = level; - Time = time; - ThreadName = threadName; - Message = message; - Data = data; - } - - public static LogEventArgsJson FromLogEventArgs(LogEventArgs args) - { - return new LogEventArgsJson(args.Level, args.Time, args.ThreadName, args.Message, DynamicObjectFormatter.Format(args.Data)); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs b/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs deleted file mode 100644 index da21f11e..00000000 --- a/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Text.Json.Serialization; - -namespace Ryujinx.Common.Logging -{ - [JsonSerializable(typeof(LogEventArgsJson))] - internal partial class LogEventJsonSerializerContext : JsonSerializerContext - { - } -}
\ No newline at end of file diff --git a/Ryujinx.Common/Logging/LogLevel.cs b/Ryujinx.Common/Logging/LogLevel.cs index 3786c756..8857fb45 100644 --- a/Ryujinx.Common/Logging/LogLevel.cs +++ b/Ryujinx.Common/Logging/LogLevel.cs @@ -1,9 +1,5 @@ -using Ryujinx.Common.Utilities; -using System.Text.Json.Serialization; - namespace Ryujinx.Common.Logging { - [JsonConverter(typeof(TypedStringEnumConverter<LogLevel>))] public enum LogLevel { Debug, diff --git a/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs b/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs index 06976433..95f96576 100644 --- a/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs +++ b/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs @@ -1,5 +1,5 @@ -using Ryujinx.Common.Utilities; -using System.IO; +using System.IO; +using System.Text.Json; namespace Ryujinx.Common.Logging { @@ -25,8 +25,12 @@ namespace Ryujinx.Common.Logging public void Log(object sender, LogEventArgs e) { - var logEventArgsJson = LogEventArgsJson.FromLogEventArgs(e); - JsonHelper.SerializeToStream(_stream, logEventArgsJson, LogEventJsonSerializerContext.Default.LogEventArgsJson); + string text = JsonSerializer.Serialize(e); + + using (BinaryWriter writer = new BinaryWriter(_stream)) + { + writer.Write(text); + } } public void Dispose() |
