LogHelper.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using DBHelper;
  2. using Microsoft.EntityFrameworkCore;
  3. using System;
  4. using System.Linq;
  5. using WCS.Entity;
  6. using WCS.Service.Log;
  7. namespace WCS.Service.Helpers
  8. {
  9. public class LogHelper
  10. {
  11. private static readonly object lockObject = new();
  12. /// <summary>
  13. /// 添加异常记录
  14. /// </summary>
  15. /// <param name="msg">异常信息</param>
  16. /// <param name="device">异常关联设备</param>
  17. /// <param name="type">异常类型</param>
  18. public static void AddWCS_EXCEPTION(string msg, string device, string type)
  19. {
  20. lock (lockObject)
  21. {
  22. DB.Do(db =>
  23. {
  24. var exp = db.Default.Set<WCS_EXCEPTION>()
  25. .Where(v => EF.Functions.DateDiffSecond(v.UPDATETIME, DateTime.Now) < 5)
  26. .Where(v => v.MSG == msg)
  27. .OrderByDescending(v => v.ID)
  28. .FirstOrDefault();
  29. exp ??= db.Default.Set<WCS_EXCEPTION>().Add(new WCS_EXCEPTION
  30. {
  31. MSG = msg,
  32. DEVICE = device,
  33. EXCEPTIONTYPE = type,
  34. STARTTIME = DateTime.Now,
  35. TIMES = 0,
  36. UPDATETIME = DateTime.Now,
  37. UPDATEUSER = "WCS"
  38. }).Entity;
  39. exp.TIMES++;
  40. exp.UPDATETIME = DateTime.Now;
  41. db.Default.SaveChanges();
  42. });
  43. }
  44. }
  45. /// <summary>
  46. /// 拼接日志消息 ,避免返回异常时写错导致异常
  47. /// </summary>
  48. /// <param name="msg">异常信息</param>
  49. /// <param name="device">异常关联设备</param>
  50. /// <param name="type">异常类型</param>
  51. /// <returns></returns>
  52. public static string SpliceLogMessage(string msg, string device, WCS_EXCEPTIONTYPE type, Type type1)
  53. {
  54. InfoLog.INFO_ERROR($"{type1.FullName}--{msg}--{device}--{type}");
  55. return $"{msg}|{device}|{type}";
  56. }
  57. ///// <summary>
  58. ///// 秒表
  59. ///// </summary>
  60. //public static void Timer<T>(Action<> act, string msg)
  61. //{
  62. // var timer = new Stopwatch();
  63. // timer.Start();
  64. // timer.Stop();
  65. // InfoLog.INFO_TIMING(msg + $"{timer.ElapsedMilliseconds}");
  66. //}
  67. }
  68. }