SysLogBLLCore.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using WMS.Util;
  7. using WMS.Info;
  8. using SqlSugar;
  9. using System.Diagnostics;
  10. using System.Reflection;
  11. namespace WMS.Core
  12. {
  13. public class SysLogBLLCore
  14. {
  15. public static void WriteLog(BLLExecInfo BLLExec, ELogType eLogType)
  16. {
  17. try
  18. {
  19. SYS_LOG log = new SYS_LOG();
  20. log.F_NO = Guid.NewGuid().ToString();
  21. log.F_RUNMS = (decimal)CommonUtil.TimerEnd(BLLExec.RunWatch);
  22. log.F_LOGTIME = DateTime.Now;
  23. log.F_APPTYPENUM = 0;
  24. log.F_TYPENUM = (int)eLogType;
  25. if (BLLExec.Ex == null)
  26. {
  27. log.F_TEXT = string.IsNullOrWhiteSpace(BLLExec.BLLObj.SuccessMsg) ? "操作成功。" : BLLExec.BLLObj.SuccessMsg;
  28. log.F_ISSUCC = 1;
  29. }
  30. else
  31. {
  32. log.F_TEXT = BLLExec.Ex.Message;
  33. log.F_ISSUCC = 0;
  34. }
  35. if (BLLExec.BLLObj != null)
  36. {
  37. log.F_APPTYPENUM = (int)BLLExec.BLLObj.LoginUser.AppType;
  38. log.F_CLASSNO = BLLCore.GetBLLClassNo(BLLExec.BLLObj);
  39. log.F_CLASSDESC = BLLExec.BLLObj.BLLDesc;
  40. StringBuilder sb = new StringBuilder();
  41. sb.Append("---------------------------------------请求数据-----------------------------------------------------------------");
  42. sb.AppendLine(BLLExec.BLLObj.InJsonData);
  43. if (BLLExec.Ex != null)
  44. {
  45. sb.AppendLine("----------------------------------------异常数据----------------------------------------------------------------");
  46. sb.AppendLine(BLLExec.Ex.ToString());
  47. sb.AppendLine("----------------------------------------异常内部数据----------------------------------------------------------------");
  48. if (BLLExec.Ex.InnerException == null)
  49. {
  50. sb.AppendLine(string.Format("Message:{0} Source:{1} StackTrace:{2} ", BLLExec.Ex.Message, BLLExec.Ex.Source, BLLExec.Ex.StackTrace));
  51. }
  52. else
  53. {
  54. sb.AppendLine(string.Format("Message:{0} Source:{1} StackTrace:{2} ", BLLExec.Ex.InnerException.Message, BLLExec.Ex.InnerException.Source, BLLExec.Ex.InnerException.StackTrace));
  55. }
  56. }
  57. log.F_TEXTDTL = sb.ToString();
  58. log.F_IPADDRESS = BLLExec.BLLObj.LoginUser.IPAddress;
  59. log.F_USERNO = BLLExec.BLLObj.LoginUser.UserNo;
  60. log.F_APPDEVICENO = BLLExec.BLLObj.LoginUser.AppDeviceNo;
  61. }
  62. SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
  63. }
  64. catch (Exception ex)
  65. {
  66. LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(ex.ToString());
  67. }
  68. }
  69. public static void WriteLog(LoginUserInfo LoginUser, string ModuleNo, string ModuleName, string UrlAddress)
  70. {
  71. try
  72. {
  73. SYS_LOG log = new SYS_LOG();
  74. log.F_NO = Guid.NewGuid().ToString();
  75. log.F_RUNMS = 0;
  76. log.F_LOGTIME = DateTime.Now;
  77. log.F_APPTYPENUM = (int)LoginUser.AppType;
  78. log.F_TYPENUM = (int)ELogType.Visit;
  79. log.F_TEXT = string.Format("{0}[{1},{2}]", ModuleNo, ModuleName, UrlAddress);
  80. log.F_ISSUCC = 1;
  81. log.F_IPADDRESS = LoginUser.IPAddress;
  82. log.F_CLASSNO = "VisitModule";
  83. log.F_CLASSDESC = "模块访问";
  84. log.F_APPDEVICENO = LoginUser.AppDeviceNo;
  85. log.F_USERNO = LoginUser.UserNo;
  86. var d =new
  87. {
  88. ModuleNo,
  89. ModuleName,
  90. UrlAddress,
  91. };
  92. log.F_TEXTDTL = d.ToJson();
  93. SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
  94. }
  95. catch (Exception ex)
  96. {
  97. LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(ex.ToString());
  98. }
  99. }
  100. public static void WriteLog(LoginUserInfo LoginUser,dynamic JsonData, string ClassNo, string ClassDesc, Stopwatch ts, ELogType eLogType, Exception ex)
  101. {
  102. try
  103. {
  104. string injson = JsonData == null ? "" : JsonData.ToJson();
  105. SYS_LOG log = new SYS_LOG();
  106. log.F_NO = Guid.NewGuid().ToString();
  107. log.F_RUNMS = (decimal)CommonUtil.TimerEnd(ts);
  108. log.F_LOGTIME = DateTime.Now;
  109. log.F_APPTYPENUM = (int)LoginUser.AppType;
  110. log.F_TYPENUM = (int)eLogType;
  111. log.F_TEXT = ex==null?"操作成功。":ex.Message;
  112. log.F_ISSUCC = ex == null?1:0;
  113. log.F_IPADDRESS = LoginUser.IPAddress;
  114. log.F_CLASSNO = ClassNo;
  115. log.F_CLASSDESC = ClassDesc;
  116. log.F_APPDEVICENO = LoginUser.AppDeviceNo;
  117. log.F_USERNO = LoginUser.UserNo;
  118. log.F_TEXTDTL = injson;
  119. SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
  120. }
  121. catch (Exception e)
  122. {
  123. CommonUtil.TimerEnd(ts);
  124. LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(e.ToString());
  125. }
  126. }
  127. public static void WriteLog(LoginUserInfo LoginUser, string ClassDesc,dynamic JsonData, Action action)
  128. {
  129. Stopwatch ts = CommonUtil.TimerStart();
  130. StackTrace ss = new StackTrace(true);
  131. //index:0为本身的方法;1为调用方法;2为其上上层,依次类推
  132. MethodBase mb = ss.GetFrame(1).GetMethod();
  133. string ClassNo = mb.ReflectedType.FullName + "." + mb.Name;
  134. try
  135. {
  136. action.Invoke();
  137. WriteLog(LoginUser, JsonData, ClassNo, ClassDesc, ts, ELogType.Work, null);
  138. }
  139. catch (Exception ex)
  140. {
  141. WriteLog(LoginUser, JsonData, ClassNo, ClassDesc, ts, ELogType.Work, ex);
  142. throw ex;
  143. }
  144. }
  145. /// <summary>
  146. /// 清空日志
  147. /// </summary>
  148. /// <param name="categoryId">日志分类Id</param>
  149. /// <param name="keepTime">保留时间段内</param>
  150. public static void RemoveLog(int LogType, string keepTime)
  151. {
  152. try
  153. {
  154. DateTime operateTime = DateTime.Now;
  155. if (keepTime == "7")//保留近一周
  156. {
  157. operateTime = DateTime.Now.AddDays(-7);
  158. }
  159. else if (keepTime == "1")//保留近一个月
  160. {
  161. operateTime = DateTime.Now.AddMonths(-1);
  162. }
  163. else if (keepTime == "3")//保留近三个月
  164. {
  165. operateTime = DateTime.Now.AddMonths(-3);
  166. }
  167. SysDbCore.GetDbCtx().Deleteable<SYS_LOG>().Where(it => it.F_LOGTIME <= operateTime && it.F_TYPENUM == LogType).ExecuteCommand();
  168. }
  169. catch (Exception ex)
  170. {
  171. throw ex;
  172. }
  173. }
  174. /// <summary>
  175. /// 日志列表
  176. /// </summary>
  177. /// <param name="pagination">分页</param>
  178. /// <param name="queryJson">查询参数</param>
  179. /// <param name="userId">操作用户Id</param>
  180. /// <returns></returns>
  181. public static IEnumerable<SYS_LOG> GetPageList(Pagination pagination, string queryJson, string UserNo)
  182. {
  183. try
  184. {
  185. var queryParam = queryJson.ToJObject();
  186. var db = SysDbCore.GetDbCtx().Queryable<SYS_LOG>();
  187. //// 日志分类
  188. if (!queryParam["CategoryId"].IsEmpty())
  189. {
  190. int categoryId = queryParam["CategoryId"].ToInt();
  191. db.WhereIF(true, it => it.F_TYPENUM == categoryId);
  192. }
  193. // 操作时间
  194. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  195. {
  196. DateTime startTime = queryParam["StartTime"].ToDate();
  197. DateTime endTime = queryParam["EndTime"].ToDate();
  198. db.WhereIF(true, it => it.F_LOGTIME >= startTime && it.F_LOGTIME <= endTime);
  199. }
  200. // 操作用户Id
  201. if (!UserNo.IsEmpty())
  202. {
  203. db.WhereIF(true, it => it.F_USERNO == UserNo);
  204. }
  205. int count = 0;
  206. var page = db.OrderBy(it => it.F_LOGTIME, OrderByType.Desc).ToPageList(pagination.page, pagination.rows, ref count);
  207. pagination.records = count;
  208. return page;
  209. }
  210. catch (Exception ex)
  211. {
  212. throw ex;
  213. }
  214. }
  215. }
  216. }