123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using WMS.Util;
- using WMS.Info;
- using SqlSugar;
- using System.Diagnostics;
- using System.Reflection;
- namespace WMS.Core
- {
- public class SysLogBLLCore
- {
- public static void WriteLog(BLLExecInfo BLLExec, ELogType eLogType)
- {
- try
- {
- SYS_LOG log = new SYS_LOG();
- log.F_NO = Guid.NewGuid().ToString();
- log.F_RUNMS = (decimal)CommonUtil.TimerEnd(BLLExec.RunWatch);
- log.F_LOGTIME = DateTime.Now;
- log.F_APPTYPENUM = 0;
- log.F_TYPENUM = (int)eLogType;
- if (BLLExec.Ex == null)
- {
- log.F_TEXT = string.IsNullOrWhiteSpace(BLLExec.BLLObj.SuccessMsg) ? "操作成功。" : BLLExec.BLLObj.SuccessMsg;
- log.F_ISSUCC = 1;
- }
- else
- {
- log.F_TEXT = BLLExec.Ex.Message;
- log.F_ISSUCC = 0;
- }
- if (BLLExec.BLLObj != null)
- {
- log.F_APPTYPENUM = (int)BLLExec.BLLObj.LoginUser.AppType;
- log.F_CLASSNO = BLLCore.GetBLLClassNo(BLLExec.BLLObj);
- log.F_CLASSDESC = BLLExec.BLLObj.BLLDesc;
- StringBuilder sb = new StringBuilder();
- sb.Append("---------------------------------------请求数据-----------------------------------------------------------------");
- sb.AppendLine(BLLExec.BLLObj.InJsonData);
- if (BLLExec.Ex != null)
- {
- sb.AppendLine("----------------------------------------异常数据----------------------------------------------------------------");
- sb.AppendLine(BLLExec.Ex.ToString());
- sb.AppendLine("----------------------------------------异常内部数据----------------------------------------------------------------");
- if (BLLExec.Ex.InnerException == null)
- {
- sb.AppendLine(string.Format("Message:{0} Source:{1} StackTrace:{2} ", BLLExec.Ex.Message, BLLExec.Ex.Source, BLLExec.Ex.StackTrace));
- }
- else
- {
- sb.AppendLine(string.Format("Message:{0} Source:{1} StackTrace:{2} ", BLLExec.Ex.InnerException.Message, BLLExec.Ex.InnerException.Source, BLLExec.Ex.InnerException.StackTrace));
- }
- }
- log.F_TEXTDTL = sb.ToString();
- log.F_IPADDRESS = BLLExec.BLLObj.LoginUser.IPAddress;
- log.F_USERNO = BLLExec.BLLObj.LoginUser.UserNo;
- log.F_APPDEVICENO = BLLExec.BLLObj.LoginUser.AppDeviceNo;
- }
- SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
- }
- catch (Exception ex)
- {
- LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(ex.ToString());
- }
- }
- public static void WriteLog(LoginUserInfo LoginUser, string ModuleNo, string ModuleName, string UrlAddress)
- {
- try
- {
- SYS_LOG log = new SYS_LOG();
- log.F_NO = Guid.NewGuid().ToString();
- log.F_RUNMS = 0;
- log.F_LOGTIME = DateTime.Now;
- log.F_APPTYPENUM = (int)LoginUser.AppType;
- log.F_TYPENUM = (int)ELogType.Visit;
- log.F_TEXT = string.Format("{0}[{1},{2}]", ModuleNo, ModuleName, UrlAddress);
- log.F_ISSUCC = 1;
- log.F_IPADDRESS = LoginUser.IPAddress;
- log.F_CLASSNO = "VisitModule";
- log.F_CLASSDESC = "模块访问";
- log.F_APPDEVICENO = LoginUser.AppDeviceNo;
- log.F_USERNO = LoginUser.UserNo;
- var d =new
- {
- ModuleNo,
- ModuleName,
- UrlAddress,
- };
- log.F_TEXTDTL = d.ToJson();
- SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
- }
- catch (Exception ex)
- {
- LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(ex.ToString());
- }
- }
- public static void WriteLog(LoginUserInfo LoginUser,dynamic JsonData, string ClassNo, string ClassDesc, Stopwatch ts, ELogType eLogType, Exception ex)
- {
- try
- {
- string injson = JsonData == null ? "" : JsonData.ToJson();
- SYS_LOG log = new SYS_LOG();
- log.F_NO = Guid.NewGuid().ToString();
- log.F_RUNMS = (decimal)CommonUtil.TimerEnd(ts);
- log.F_LOGTIME = DateTime.Now;
- log.F_APPTYPENUM = (int)LoginUser.AppType;
- log.F_TYPENUM = (int)eLogType;
- log.F_TEXT = ex==null?"操作成功。":ex.Message;
- log.F_ISSUCC = ex == null?1:0;
- log.F_IPADDRESS = LoginUser.IPAddress;
- log.F_CLASSNO = ClassNo;
- log.F_CLASSDESC = ClassDesc;
- log.F_APPDEVICENO = LoginUser.AppDeviceNo;
- log.F_USERNO = LoginUser.UserNo;
- log.F_TEXTDTL = injson;
- SysDbCore.GetDbCtx().Insertable<SYS_LOG>(log).ExecuteCommand();
- }
- catch (Exception e)
- {
- CommonUtil.TimerEnd(ts);
- LogFactory.GetLogger("WMS.Core.SysLogCore.WriteLog").Error(e.ToString());
- }
- }
- public static void WriteLog(LoginUserInfo LoginUser, string ClassDesc,dynamic JsonData, Action action)
- {
- Stopwatch ts = CommonUtil.TimerStart();
- StackTrace ss = new StackTrace(true);
- //index:0为本身的方法;1为调用方法;2为其上上层,依次类推
- MethodBase mb = ss.GetFrame(1).GetMethod();
- string ClassNo = mb.ReflectedType.FullName + "." + mb.Name;
- try
- {
- action.Invoke();
- WriteLog(LoginUser, JsonData, ClassNo, ClassDesc, ts, ELogType.Work, null);
- }
- catch (Exception ex)
- {
- WriteLog(LoginUser, JsonData, ClassNo, ClassDesc, ts, ELogType.Work, ex);
- throw ex;
- }
- }
- /// <summary>
- /// 清空日志
- /// </summary>
- /// <param name="categoryId">日志分类Id</param>
- /// <param name="keepTime">保留时间段内</param>
- public static void RemoveLog(int LogType, string keepTime)
- {
- try
- {
- DateTime operateTime = DateTime.Now;
- if (keepTime == "7")//保留近一周
- {
- operateTime = DateTime.Now.AddDays(-7);
- }
- else if (keepTime == "1")//保留近一个月
- {
- operateTime = DateTime.Now.AddMonths(-1);
- }
- else if (keepTime == "3")//保留近三个月
- {
- operateTime = DateTime.Now.AddMonths(-3);
- }
- SysDbCore.GetDbCtx().Deleteable<SYS_LOG>().Where(it => it.F_LOGTIME <= operateTime && it.F_TYPENUM == LogType).ExecuteCommand();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 日志列表
- /// </summary>
- /// <param name="pagination">分页</param>
- /// <param name="queryJson">查询参数</param>
- /// <param name="userId">操作用户Id</param>
- /// <returns></returns>
- public static IEnumerable<SYS_LOG> GetPageList(Pagination pagination, string queryJson, string UserNo)
- {
- try
- {
- var queryParam = queryJson.ToJObject();
- var db = SysDbCore.GetDbCtx().Queryable<SYS_LOG>();
- //// 日志分类
- if (!queryParam["CategoryId"].IsEmpty())
- {
- int categoryId = queryParam["CategoryId"].ToInt();
- db.WhereIF(true, it => it.F_TYPENUM == categoryId);
- }
- // 操作时间
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- DateTime startTime = queryParam["StartTime"].ToDate();
- DateTime endTime = queryParam["EndTime"].ToDate();
- db.WhereIF(true, it => it.F_LOGTIME >= startTime && it.F_LOGTIME <= endTime);
- }
- // 操作用户Id
- if (!UserNo.IsEmpty())
- {
- db.WhereIF(true, it => it.F_USERNO == UserNo);
- }
- int count = 0;
- var page = db.OrderBy(it => it.F_LOGTIME, OrderByType.Desc).ToPageList(pagination.page, pagination.rows, ref count);
- pagination.records = count;
- return page;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- }
- }
|