예제 #1
0
        /// <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;
                }
            }
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
 /// <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);
 }
예제 #4
0
        /// <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;
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        /// <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 写入数据库
        }