LogNetManagment.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Xml.Linq;
  8. namespace HslCommunication.LogNet
  9. {
  10. /*************************************************************************************
  11. *
  12. * 目标:
  13. * 1. 高性能的日志类
  14. * 2. 灵活的配置
  15. * 3. 日志分级
  16. * 4. 控制输出
  17. * 5. 方便筛选
  18. * 6. 方便的配置按小时,天,月,年记录
  19. *
  20. *
  21. *
  22. *************************************************************************************/
  23. /// <summary>
  24. /// 日志类的管理器
  25. /// </summary>
  26. public class LogNetManagment
  27. {
  28. /// <summary>
  29. /// 存储文件的时候指示单文件存储
  30. /// </summary>
  31. internal const int LogSaveModeBySingleFile = 1;
  32. /// <summary>
  33. /// 存储文件的时候指示根据文件大小存储
  34. /// </summary>
  35. internal const int LogSaveModeByFileSize = 2;
  36. /// <summary>
  37. /// 存储文件的时候指示根据日志时间来存储
  38. /// </summary>
  39. internal const int LogSaveModeByDateTime = 3;
  40. internal const string TextDebug = "调试";
  41. internal const string TextInfo = "信息";
  42. internal const string TextWarn = "警告";
  43. internal const string TextError = "错误";
  44. internal const string TextFatal = "致命";
  45. internal const string TextAbandon = "放弃";
  46. internal const string TextAll = "全部";
  47. /// <summary>
  48. /// 日志文件的头标志
  49. /// </summary>
  50. internal const string LogFileHeadString = "Logs_";
  51. internal static string GetDegreeDescription(HslMessageDegree degree)
  52. {
  53. switch (degree)
  54. {
  55. case HslMessageDegree.DEBUG: return TextDebug;
  56. case HslMessageDegree.INFO: return TextInfo;
  57. case HslMessageDegree.WARN: return TextWarn;
  58. case HslMessageDegree.ERROR: return TextError;
  59. case HslMessageDegree.FATAL: return TextFatal;
  60. case HslMessageDegree.None: return TextAbandon;
  61. default: return TextAbandon;
  62. }
  63. }
  64. /// <summary>
  65. /// 公开的一个静态变量,允许随意的设置
  66. /// </summary>
  67. public static ILogNet LogNet { get; set; }
  68. /// <summary>
  69. /// 通过异常文本格式化成字符串用于保存或发送
  70. /// </summary>
  71. /// <param name="text"></param>
  72. /// <param name="ex"></param>
  73. /// <returns></returns>
  74. public static string GetSaveStringFromException(string text, Exception ex)
  75. {
  76. StringBuilder builder = new StringBuilder(text);
  77. if (ex != null)
  78. {
  79. if (!string.IsNullOrEmpty(text))
  80. {
  81. builder.Append(" : ");
  82. }
  83. builder.Append("错误消息:");
  84. builder.Append(ex.Message);
  85. builder.Append(Environment.NewLine);
  86. builder.Append("源:");
  87. builder.Append(ex.Source);
  88. builder.Append(Environment.NewLine);
  89. builder.Append("堆栈:");
  90. builder.Append(ex.StackTrace);
  91. builder.Append(Environment.NewLine);
  92. builder.Append("错误类型:");
  93. builder.Append(ex.GetType().ToString());
  94. builder.Append(Environment.NewLine);
  95. builder.Append("调用方法:");
  96. builder.Append(ex.TargetSite?.ToString());
  97. builder.Append(Environment.NewLine);
  98. builder.Append("\u0002/=================================================[ Exception ]================================================/");
  99. }
  100. return builder.ToString();
  101. }
  102. }
  103. }