LogMessageHelper.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using WCS.Data.Models;
  5. using System.Linq;
  6. namespace WCS.Data.Utils
  7. {
  8. /// <summary>
  9. /// 日志消息处理辅助类
  10. /// </summary>
  11. public class LogMessageHelper
  12. {
  13. /// <summary>
  14. /// 记录日志消息
  15. /// </summary
  16. /// <param name="isWriteLog4net">是否写入log4net</param>
  17. /// <param name="message">消息</param>
  18. public static void RecordLogMessage(string message, bool isWriteLog4net = true,string level= "ERROR")
  19. {
  20. try
  21. {
  22. System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
  23. System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();
  24. //System.Reflection.MethodBase.GetCurrentMethod().Name;
  25. var log = new WCS_LOG();
  26. log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
  27. log.LOG_LEVEL = level;
  28. log.LOG_FUNC = mb.Name;
  29. log.LOG_INFO = message;
  30. log.LOG_INFODTL = string.Empty;
  31. log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
  32. log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
  33. log.LOG_ADDDATETIME = DateTime.Now;
  34. log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
  35. log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
  36. log.LOG_EDITDATETIME = DateTime.Now;
  37. if (isWriteLog4net)
  38. {
  39. Log4netHelper.Logger_Error.Error(message);
  40. }
  41. ThreadHelper.TaskThread(RecordLogMsg, log);
  42. }
  43. catch (Exception e)
  44. {
  45. Log4netHelper.Logger_Error.Error(e.ToString());
  46. }
  47. }
  48. /// <summary>
  49. /// 记录日志消息
  50. /// </summary>
  51. /// <param name="message">消息</param>
  52. /// <param name="ex">异常类</param>
  53. /// <param name="isWriteLog4net">是否写入log4net</param>
  54. public static void RecordLogMessage(string message, Exception ex, bool isWriteLog4net = true, string level = "ERROR")
  55. {
  56. try
  57. {
  58. var log = new WCS_LOG();
  59. log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
  60. log.LOG_LEVEL = LogLevelEnum.ERROR.ToString();
  61. log.LOG_FUNC = ex.TargetSite.Name;
  62. log.LOG_INFO = message;
  63. log.LOG_INFODTL = ex.ToString();
  64. log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
  65. log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
  66. log.LOG_ADDDATETIME = DateTime.Now;
  67. log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
  68. log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
  69. log.LOG_EDITDATETIME = DateTime.Now;
  70. if (isWriteLog4net)
  71. {
  72. Log4netHelper.Logger_Error.ErrorFormat("消息:{0} 异常详情:{1}", message, ex.ToString());
  73. }
  74. ThreadHelper.TaskThread(RecordLogMsg, log);
  75. }
  76. catch (Exception e)
  77. {
  78. Log4netHelper.Logger_Error.Error(e.ToString());
  79. }
  80. }
  81. /// <summary>
  82. /// 记录日志消息
  83. /// </summary>
  84. /// <param name="ex">异常类</param>
  85. /// <param name="isWriteLog4net">是否写入log4net</param>
  86. public static void RecordLogMessage(Exception ex, bool isWriteLog4net = true)
  87. {
  88. try
  89. {
  90. var log = new WCS_LOG();
  91. log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
  92. log.LOG_LEVEL = LogLevelEnum.ERROR.ToString();
  93. log.LOG_FUNC = ex.TargetSite.Name;
  94. log.LOG_INFO = ex.Message;
  95. log.LOG_INFODTL = ex.ToString();
  96. log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
  97. log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
  98. log.LOG_ADDDATETIME = DateTime.Now;
  99. log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
  100. log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
  101. log.LOG_EDITDATETIME = DateTime.Now;
  102. if (isWriteLog4net)
  103. {
  104. Log4netHelper.Logger_Error.Error(ex.ToString());
  105. }
  106. ThreadHelper.TaskThread(RecordLogMsg, log);
  107. }
  108. catch (Exception e)
  109. {
  110. Log4netHelper.Logger_Error.Error(e.ToString());
  111. }
  112. }
  113. private static void RecordLogMsg(WCS_LOG logmsg)
  114. {
  115. var logmessage = BaseCurrent.Wcs_LogSet.FirstOrDefault(v => v.LOG_INFO == logmsg.LOG_INFO);
  116. TryCachHelper.TryExecute((db) =>
  117. {
  118. if (logmessage == null)
  119. {
  120. //插入日志
  121. db.Insertable(logmsg).ExecuteCommand();
  122. }
  123. else if (logmessage.LOG_EDITDATETIME.AddMilliseconds(60000) < DateTime.Now)//相同消息1分钟修改一次
  124. {
  125. //更新日志时间
  126. db.Updateable<WCS_LOG>(it => new WCS_LOG() { LOG_EDITDATETIME = DateTime.Now, LOG_INFODTL = logmsg.LOG_INFODTL })
  127. .Where(it => it.LOG_ID == logmessage.LOG_ID)
  128. .ExecuteCommand();
  129. }
  130. });
  131. }
  132. }
  133. }