怎么用?
如上图结果图,我们需要调用日志方法往数据库中插入日志操作数据:
//添加操作日志 OprLog(new OprLogIn() { Controller = "ResumeMain", Action = "Save", UserName = UserName, OperationType = "简历主从表", Data = "" }); //添加错误日志 ErrorLog(new ErroInrLog() { Url = "ResumeMain/Save", UserName = UserName, Message = ex.ToString().Substring(0,1000), ErrorType = ErrorType.GeneralError.ToString(), Data = "错误" });
怎么用?照上面的依葫芦画瓢就可以,那么后面是个什么机制呢?
机制原理
这个其实也没有什么复杂的机制,就是建三个类型的数据模型,然后建数据库表,然后把三种类型的数据存入相应的表即可,三个数据模型关键数据参数,具体见软件开发框架源代码快速开发平台:
审计日志模型 AuditLogInViewModel.cs
public partial class AuditLogInViewModel { public int Id { get; set; } [Display(Name = "来源Id")] public int? FromId { get; set; } [Display(Name = "菜单标题")] public string Title { get; set; } [Display(Name = "IP")] public string IP { get; set; } [Display(Name = "表名")] public string TableName { get; set; } [Display(Name = "更改列")] public string Column { get; set; } [Display(Name = "新值")] public string NewVal { get; set; } [Display(Name = "旧值")] public string OldVal { get; set; } [Display(Name = "添加时间")] public DateTime? AddTime { get; set; } [Display(Name = "操作人")] public int? SystemUserId { get; set; } [Display(Name = "备注")] public string Remark { get; set; } [Display(Name = "时间")] public string AddDate { get; set; } [Display(Name = "用户名")] public string SystemUserName { get; set; } }
操作日志数据模型OprLogInViewModel.cs
public partial class OprLogInViewModel { public int Id { get; set; } [Display(Name = "控制器名称")] public string Controller { get; set; } [Display(Name = "参数或者返回数据")] public string Data { get; set; } [Display(Name = "操作人")] public string UserName { get; set; } [Display(Name = "操作类型")] public string OperationType { get; set; } [Display(Name = "请求的方法名称")] public string Action { get; set; } [Display(Name = "请求的连接")] public string Url { get; set; } [Display(Name = "操作时间")] public DateTime? AddTime { get; set; } }
错误日志数据模型ErroInrLogViewModel.cs
public partial class ErroInrLogViewModel { public int Id { get; set; } [Display(Name = "Url")] public string Url { get; set; } [Display(Name = "错误源")] public string Source { get; set; } [Display(Name = "数据")] public string Data { get; set; } [Display(Name = "异常全信息")] public string InnerException { get; set; } [Display(Name = "异常信息")] public string Message { get; set; } [Display(Name = "堆栈信息")] public string StackTrace { get; set; } [Display(Name = "当前异常的方法")] public string TargetSite { get; set; } [Display(Name = "出错的类名")] public string DeclaringTypeName { get; set; } [Display(Name = "状态码")] public string StatusCode { get; set; } [Display(Name = "添加时间")] public DateTime? AddTime { get; set; } [Display(Name = "类型")] public string Type { get; set; } [Display(Name = "错误类型")] public string ErrorType { get; set; } [Display(Name = "用户名称")] public string UserName { get; set; } }
模型建好后,那就是基本的增删改查了, OprLog和ErrorLog方法的实现在软件开发框架控制器基类BaseController里,代码如下:
/// <summary> /// 错误日志记录 /// </summary> /// <param name="erroInrLog"></param> public void ErrorLog(ErroInrLog erroInrLog) { if (erroInrLog == null) { return; } var _erroInrLogService = ResolveService<IErroInrLogService>(); erroInrLog.CreateBy = this.CurrentUser.LoginAccount; erroInrLog.CreateAt = DateTime.Now; erroInrLog.AddTime = DateTime.Now; erroInrLog.UserName = UserName; Task.Run(() => { _erroInrLogService.CreateErroInrLog(erroInrLog); }); } /// <summary> /// 错误日志记录 /// </summary> /// <param name="erroInrLogList"></param> public void ErrorLogs(List<ErroInrLog> erroInrLogList) { if (erroInrLogList == null || erroInrLogList.Count <= 0) { return; } foreach (var erroInrLog in erroInrLogList) { erroInrLog.CreateBy = this.CurrentUser.LoginAccount; erroInrLog.CreateAt = DateTime.Now; erroInrLog.AddTime = DateTime.Now; erroInrLog.UserName = UserName; } var _erroInrLogService = ResolveService<IErroInrLogService>(); Task.Run(() => { _erroInrLogService.CreateErroInrLogList(erroInrLogList); }); } /// <summary> /// 操作日志记录 /// </summary> /// <param name="oprLogIn"></param> public void OprLog(OprLogIn oprLogIn) { if (oprLogIn == null) { return; } var _oprloginService = ResolveService<IOprLogInService>(); oprLogIn.CreateBy = this.CurrentUser.LoginAccount; oprLogIn.CreateAt = DateTime.Now; oprLogIn.AddTime = DateTime.Now; oprLogIn.UserName = UserName; Task.Run(() => { _oprloginService.CreateOprLogIn(oprLogIn); }); } /// <summary> /// 操作日志记录 /// </summary> /// <param name="auditLogList"></param> public void OprLogs(List<OprLogIn> oprLogList) { if (oprLogList == null || oprLogList.Count <= 0) { return; } foreach (var oprLog in oprLogList) { oprLog.CreateBy = this.CurrentUser.LoginAccount; oprLog.CreateAt = DateTime.Now; oprLog.UserName = UserName; oprLog.AddTime = DateTime.Now; } var _oprloginService = ResolveService<IOprLogInService>(); Task.Run(() => { _oprloginService.CreateOprLogInList(oprLogList); }); } /// <summary> /// 审计日志记录 /// </summary> /// <param name="auditLog"></param> public void AuditLog(AuditLogIn auditLog) { if (auditLog == null) { return; } var _auditloginService = ResolveService<IAuditLogInService>(); auditLog.CreateBy = this.CurrentUser.LoginAccount; auditLog.CreateAt = DateTime.Now; auditLog.AddDate = DateTime.Now.ToString(); auditLog.AddTime = DateTime.Now; auditLog.SystemUserId = UserID; auditLog.SystemUserName = UserName; auditLog.IP = HttpHelper.GetWebClientIp(); Task.Run(() => { _auditloginService.CreateAuditLogIn(auditLog); }); } /// <summary> /// 审计日志记录 /// </summary> /// <param name="auditLogList"></param> public void AuditLogs(List<AuditLogIn> auditLogList) { var list = auditLogList.Where(p => p.OldVal != p.NewVal).ToList(); if (list == null || list.Count <= 0) { return; } foreach (var auditLog in list) { auditLog.CreateBy = this.CurrentUser.LoginAccount; auditLog.CreateAt = DateTime.Now; auditLog.AddDate = DateTime.Now.ToString(); auditLog.AddTime = DateTime.Now; auditLog.SystemUserId = UserID; auditLog.SystemUserName = UserName; auditLog.IP = HttpHelper.GetWebClientIp(); } var _auditloginService = ResolveService<IAuditLogInService>(); Task.Run(() => { _auditloginService.CreateAuditLogInList(list); }); }
操作方法
页签:日志 操作日志 错误日志 审计日志
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:软件开发框架 » 软件开发框架操作日志错误日志的使用方法
本文标题:软件开发框架操作日志错误日志的使用方法