UnityLogger.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Text.RegularExpressions;
  3. namespace ET
  4. {
  5. [Invoke]
  6. public class LogInvoker_Unity: AInvokeHandler<LogInvoker, ILog>
  7. {
  8. public override ILog Handle(LogInvoker args)
  9. {
  10. return new UnityLogger();
  11. }
  12. }
  13. public class UnityLogger: ILog
  14. {
  15. public void Trace(string msg)
  16. {
  17. UnityEngine.Debug.Log(msg);
  18. }
  19. public void Debug(string msg)
  20. {
  21. UnityEngine.Debug.Log(msg);
  22. }
  23. public void Info(string msg)
  24. {
  25. UnityEngine.Debug.Log(msg);
  26. }
  27. public void Warning(string msg)
  28. {
  29. UnityEngine.Debug.LogWarning(msg);
  30. }
  31. public void Error(string msg)
  32. {
  33. #if UNITY_EDITOR
  34. msg = Msg2LinkStackMsg(msg);
  35. #endif
  36. UnityEngine.Debug.LogError(msg);
  37. }
  38. private static string Msg2LinkStackMsg(string msg)
  39. {
  40. msg = Regex.Replace(msg,@"at (.*?) in (.*?\.cs):(\w+)", match =>
  41. {
  42. string path = match.Groups[2].Value;
  43. string line = match.Groups[3].Value;
  44. return $"{match.Groups[1].Value}\n<a href=\"{path}\" line=\"{line}\">{path}:{line}</a>";
  45. });
  46. return msg;
  47. }
  48. public void Error(Exception e)
  49. {
  50. UnityEngine.Debug.LogException(e);
  51. }
  52. public void Trace(string message, params object[] args)
  53. {
  54. UnityEngine.Debug.LogFormat(message, args);
  55. }
  56. public void Warning(string message, params object[] args)
  57. {
  58. UnityEngine.Debug.LogWarningFormat(message, args);
  59. }
  60. public void Info(string message, params object[] args)
  61. {
  62. UnityEngine.Debug.LogFormat(message, args);
  63. }
  64. public void Debug(string message, params object[] args)
  65. {
  66. UnityEngine.Debug.LogFormat(message, args);
  67. }
  68. public void Error(string message, params object[] args)
  69. {
  70. UnityEngine.Debug.LogErrorFormat(message, args);
  71. }
  72. }
  73. }