DefaultLogFormatter.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System.Text;
  2. namespace Ryujinx.Common.Logging
  3. {
  4. internal class DefaultLogFormatter : ILogFormatter
  5. {
  6. private static readonly ObjectPool<StringBuilder> StringBuilderPool = SharedPools.Default<StringBuilder>();
  7. public string Format(LogEventArgs args)
  8. {
  9. StringBuilder sb = StringBuilderPool.Allocate();
  10. try
  11. {
  12. sb.Clear();
  13. sb.Append($@"{args.Time:hh\:mm\:ss\.fff}");
  14. sb.Append($" |{args.Level.ToString()[0]}| ");
  15. if (args.ThreadName != null)
  16. {
  17. sb.Append(args.ThreadName);
  18. sb.Append(' ');
  19. }
  20. sb.Append(args.Message);
  21. if (args.Data is not null)
  22. {
  23. sb.Append(' ');
  24. DynamicObjectFormatter.Format(sb, args.Data);
  25. }
  26. return sb.ToString();
  27. }
  28. finally
  29. {
  30. StringBuilderPool.Release(sb);
  31. }
  32. }
  33. }
  34. }