DefaultLogHelper.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 Jiang Yin. All rights reserved.
  4. // Homepage: https://gameframework.cn/
  5. // Feedback: mailto:ellan@gameframework.cn
  6. //------------------------------------------------------------
  7. using GameFramework;
  8. using System;
  9. using System.IO;
  10. using UnityEngine;
  11. namespace UnityGameFramework.Runtime
  12. {
  13. /// <summary>
  14. /// 默认游戏框架日志辅助器。
  15. /// </summary>
  16. public class DefaultLogHelper : GameFrameworkLog.ILogHelper
  17. {
  18. private string logFilePath;
  19. public DefaultLogHelper() {
  20. string currentDate = DateTime.Now.ToString("yyyyMMdd");
  21. logFilePath = Application.dataPath + "/Logs/" + currentDate + ".txt";
  22. }
  23. /// <summary>
  24. /// 记录日志。
  25. /// </summary>
  26. /// <param name="level">日志等级。</param>
  27. /// <param name="message">日志内容。</param>
  28. public void Log(GameFrameworkLogLevel level, object message)
  29. {
  30. switch (level)
  31. {
  32. case GameFrameworkLogLevel.Debug:
  33. Debug.Log(Utility.Text.Format("<color=#888888>{0}</color>", message.ToString()));
  34. break;
  35. case GameFrameworkLogLevel.Info:
  36. Debug.Log(message.ToString());
  37. break;
  38. case GameFrameworkLogLevel.Warning:
  39. Debug.LogWarning(message.ToString());
  40. break;
  41. case GameFrameworkLogLevel.Error:
  42. Debug.LogError(message.ToString());
  43. break;
  44. default:
  45. throw new GameFrameworkException(message.ToString());
  46. }
  47. // 写入日志文件
  48. WriteToFile(message.ToString());
  49. }
  50. private void WriteToFile(string logMessage)
  51. {
  52. try
  53. {
  54. // 如果日志文件不存在,则创建文件
  55. if (!File.Exists(logFilePath))
  56. {
  57. Directory.CreateDirectory(Path.GetDirectoryName(logFilePath));
  58. File.Create(logFilePath).Close();
  59. }
  60. // 追加日志信息到文件
  61. using (StreamWriter writer = File.AppendText(logFilePath))
  62. {
  63. writer.WriteLine(logMessage);
  64. }
  65. }
  66. catch (Exception ex)
  67. {
  68. Debug.LogError($"Failed to write log to file: {ex.Message}");
  69. }
  70. }
  71. }
  72. }