/// <summary> /// 写日志 /// </summary> public static void WriteLog(XCLNetLogger.Model.LogModel model) { var currentContext = HttpContext.Current; Action <HttpContext, XCLNetLogger.Model.LogModel> insertLogAction = new Action <HttpContext, Model.LogModel>((actionContext, actionLogModel) => { XCLNetLogger.Lib.Common.InsertLogToDB(actionContext, actionLogModel); }); try { if (XCLNetLogger.Config.LogConfig.GetXLoggerConfig.DBConfig.IsAsync) { insertLogAction.BeginInvoke(currentContext, model, null, null); } else { insertLogAction.Invoke(currentContext, model); } } catch (Exception ex) { if (XCLNetLogger.Config.LogConfig.GetXLoggerConfig.DBConfig.NeedThrowException) { throw ex; } } }
/// <summary> /// 写入日志 /// </summary> /// <param name="logLevel">日志级别</param> /// <param name="title">标题</param> /// <param name="contents">内容</param> public static void WriteLog(XCLNetLogger.Config.LogConfig.LogLevel logLevel, string title, string contents = null) { XCLNetLogger.Model.LogModel log = new XCLNetLogger.Model.LogModel(); log.LogLevel = logLevel; log.Title = title; log.Contents = contents; Log.WriteLog(log); }
/// <summary> /// 写入异常信息 /// </summary> /// <param name="ex">异常</param> public static void WriteLog(Exception ex, string remark = null) { XCLNetLogger.Model.LogModel log = new XCLNetLogger.Model.LogModel(); log.LogLevel = Config.LogConfig.LogLevel.ERROR; log.Title = ex.Message; log.Contents = ex.StackTrace; log.Remark = remark; Log.WriteLog(log); }
/// <summary> /// 异常 /// </summary> public void OnException(ExceptionContext filterContext) { var ex = filterContext.Exception; var request = filterContext.RequestContext.HttpContext.Request; //获取异常信息 XCLNetTools.Message.MessageModel msgModel = new XCLNetTools.Message.MessageModel(); msgModel.IsSuccess = false; msgModel.Date = DateTime.Now; msgModel.ErrorCode = ""; msgModel.FromUrl = Convert.ToString(request.UrlReferrer); msgModel.Message = ex.Message; msgModel.MessageMore = ex.StackTrace; msgModel.Title = "系统出错了"; msgModel.Url = Convert.ToString(request.Url); var httpExp = ex as HttpException; if (null != httpExp) { msgModel.ErrorCode = Convert.ToString(httpExp.GetHttpCode()); } //写入日志 XCLNetLogger.Model.LogModel logModel = new XCLNetLogger.Model.LogModel(); logModel.Contents = string.Format("{0}——{1}", msgModel.Message, msgModel.MessageMore); logModel.LogLevel = XCLNetLogger.Config.LogConfig.LogLevel.ERROR; logModel.RefferUrl = msgModel.FromUrl; logModel.Title = msgModel.Title; logModel.Url = msgModel.Url; logModel.Code = msgModel.ErrorCode; XCLNetLogger.Log.WriteLog(logModel); //输出异常 //msgModel.MessageMore = null; if (msgModel.IsAjax) { filterContext.Result = new JsonResult() { Data = msgModel, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } else { filterContext.Result = new ViewResult() { ViewName = "~/Views/Common/Error.cshtml", ViewData = new ViewDataDictionary(msgModel) }; } filterContext.ExceptionHandled = true; }
protected void Button1_Click(object sender, EventArgs e) { XCLNetLogger.Model.LogModel logModel = new XCLNetLogger.Model.LogModel(); logModel.Contents = this.TextBox1.Text; XCLNetLogger.Log.WriteLog(logModel); try { int a = 100; int b = 0; int c = a / b; } catch (Exception ex) { XCLNetLogger.Log.WriteLog(ex); } }
/// <summary> /// 向数据库中写入日志信息 /// </summary> /// <param name="context">上下文</param> /// <param name="model">日志model</param> public static void InsertLogToDB(HttpContext context, XCLNetLogger.Model.LogModel model) { #region 设置部分属性的默认值 if (null != context) { var request = context.Request; if (null == model.RefferUrl) { if (null != request.UrlReferrer) { model.RefferUrl = request.UrlReferrer.AbsoluteUri; } } if (null == model.Url) { model.Url = request.Url.AbsoluteUri; } if (null == model.ClientIP) { model.ClientIP = XCLNetLogger.Lib.Common.GetIPAddress(context); } } #endregion 设置部分属性的默认值 #region 写入数据库 using (SqlConnection connection = new SqlConnection(XCLNetLogger.Config.LogConfig.GetXLoggerConfig.DBConfig.ConnectionString)) { SqlCommand cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = XCLNetLogger.Config.LogConfig.GetXLoggerConfig.DBConfig.CommandText; cmd.CommandTimeout = XCLNetLogger.Config.LogConfig.GetXLoggerConfig.DBConfig.CommandTimeOut; XCLNetLogger.Config.LogConfig.GetXLoggerConfig.ParameterList.ForEach(k => { if (null == k.Size) { cmd.Parameters.Add(new SqlParameter(k.Name, k.DBType)); } else { cmd.Parameters.Add(new SqlParameter(k.Name, k.DBType, (int)k.Size)); } }); if (null != cmd.Parameters && cmd.Parameters.Count > 0) { PropertyInfo[] pros = model.GetType().GetProperties(); for (int m = 0; m < cmd.Parameters.Count; m++) { for (int n = 0; n < pros.Length; n++) { if (string.Equals(pros[n].Name, cmd.Parameters[m].ParameterName.TrimStart('@'), StringComparison.OrdinalIgnoreCase)) { cmd.Parameters[m].Value = pros[n].GetValue(model) ?? DBNull.Value; break; } } } } connection.Open(); cmd.ExecuteNonQuery(); } #endregion 写入数据库 }