Log.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using System;
  2. using UnityEngine;
  3. using Conditional = System.Diagnostics.ConditionalAttribute;
  4. namespace Mirror.SimpleWeb
  5. {
  6. public static class Log
  7. {
  8. // used for Conditional
  9. const string SIMPLEWEB_LOG_ENABLED = nameof(SIMPLEWEB_LOG_ENABLED);
  10. const string DEBUG = nameof(DEBUG);
  11. public enum Levels
  12. {
  13. none = 0,
  14. error = 1,
  15. warn = 2,
  16. info = 3,
  17. verbose = 4,
  18. }
  19. public static ILogger logger = Debug.unityLogger;
  20. public static Levels level = Levels.none;
  21. public static string BufferToString(byte[] buffer, int offset = 0, int? length = null)
  22. {
  23. return BitConverter.ToString(buffer, offset, length ?? buffer.Length);
  24. }
  25. [Conditional(SIMPLEWEB_LOG_ENABLED)]
  26. public static void DumpBuffer(string label, byte[] buffer, int offset, int length)
  27. {
  28. if (level < Levels.verbose)
  29. return;
  30. logger.Log(LogType.Log, $"VERBOSE: <color=cyan>{label}: {BufferToString(buffer, offset, length)}</color>");
  31. }
  32. [Conditional(SIMPLEWEB_LOG_ENABLED)]
  33. public static void DumpBuffer(string label, ArrayBuffer arrayBuffer)
  34. {
  35. if (level < Levels.verbose)
  36. return;
  37. logger.Log(LogType.Log, $"VERBOSE: <color=cyan>{label}: {BufferToString(arrayBuffer.array, 0, arrayBuffer.count)}</color>");
  38. }
  39. [Conditional(SIMPLEWEB_LOG_ENABLED)]
  40. public static void Verbose(string msg, bool showColor = true)
  41. {
  42. if (level < Levels.verbose)
  43. return;
  44. if (showColor)
  45. logger.Log(LogType.Log, $"VERBOSE: <color=cyan>{msg}</color>");
  46. else
  47. logger.Log(LogType.Log, $"VERBOSE: {msg}");
  48. }
  49. [Conditional(SIMPLEWEB_LOG_ENABLED)]
  50. public static void Info(string msg, bool showColor = true)
  51. {
  52. if (level < Levels.info)
  53. return;
  54. if (showColor)
  55. logger.Log(LogType.Log, $"INFO: <color=cyan>{msg}</color>");
  56. else
  57. logger.Log(LogType.Log, $"INFO: {msg}");
  58. }
  59. /// <summary>
  60. /// An expected Exception was caught, useful for debugging but not important
  61. /// </summary>
  62. /// <param name="msg"></param>
  63. /// <param name="showColor"></param>
  64. [Conditional(SIMPLEWEB_LOG_ENABLED)]
  65. public static void InfoException(Exception e)
  66. {
  67. if (level < Levels.info)
  68. return;
  69. logger.Log(LogType.Log, $"INFO_EXCEPTION: <color=cyan>{e.GetType().Name}</color> Message: {e.Message}\n{e.StackTrace}\n\n");
  70. }
  71. [Conditional(SIMPLEWEB_LOG_ENABLED), Conditional(DEBUG)]
  72. public static void Warn(string msg, bool showColor = true)
  73. {
  74. if (level < Levels.warn)
  75. return;
  76. if (showColor)
  77. logger.Log(LogType.Warning, $"WARN: <color=orange>{msg}</color>");
  78. else
  79. logger.Log(LogType.Warning, $"WARN: {msg}");
  80. }
  81. [Conditional(SIMPLEWEB_LOG_ENABLED), Conditional(DEBUG)]
  82. public static void Error(string msg, bool showColor = true)
  83. {
  84. if (level < Levels.error)
  85. return;
  86. if (showColor)
  87. logger.Log(LogType.Error, $"ERROR: <color=red>{msg}</color>");
  88. else
  89. logger.Log(LogType.Error, $"ERROR: {msg}");
  90. }
  91. public static void Exception(Exception e)
  92. {
  93. // always log Exceptions
  94. logger.Log(LogType.Error, $"EXCEPTION: <color=red>{e.GetType().Name}</color> Message: {e.Message}\n{e.StackTrace}\n\n");
  95. }
  96. }
  97. }