示例#1
0
        public ExeResEdm Update(string tableName, Dictionary <string, object> whereParas, Dictionary <string, object> updateFDList, DBOperUser dbLogMsg = null)
        {
            ComDBFun ComDBFun = new ComDBFun(DBBaseAttr);

            updateFDList = updateFDList ?? new Dictionary <string, object>();
            var paras = whereParas.Union(updateFDList).ToDictionary(k => k.Key, v => v.Value);

            DbParameter[] pms       = GetDbParametersFromDic(paras);
            string        textParas = ComDBFun.GetUpdateSQLText(updateFDList.Keys.ToList());
            string        whereSql  = ComDBFun.GetWhereCondition(whereParas.Keys.ToList(), "and");

            textParas += whereSql;   // " where " + dic.Keys.ToArray()[skipIndex] + "=@" + dic.Keys.ToArray()[skipIndex];
            string      sql    = "update " + tableName + " set " + textParas;
            LogTraceEdm logMsg = null;

            if (dbLogMsg != null)
            {
                logMsg = new LogTraceEdm()
                {
                    LogType = LogType.修改, UserId = dbLogMsg.UserId, UserName = dbLogMsg.UserName, TabOrModu = tableName,
                };
            }
            var n = ExecuteNonQuery(sql, logMsg, pms);

            return(n);
        }
示例#2
0
        /// <summary>
        /// 记录初次访问日志
        /// </summary>
        public static void WriteFirstVisitLog()
        {
            if (!bRegister)
            {
                return;
            }
            string firstReqKey = AppConfig.GetCacheKey(CacheConst.firstRequest);

            if (dataCache.GetCache(firstReqKey) as string == "0")
            {
                return;
            }
            lock (lockObj)
            {
                var         client = ClientServerInfo.ClientInfo.GetClientInfo();
                string      userIP = client.IP + "[" + client.Host + "]";
                string      detail = string.Format("服务器(IIS版本{0})启动后,初次被访问,用户为{1}", ClientServerInfo.ServerInfo.GetIISVerson(), userIP);
                LogTraceEdm first  = new LogTraceEdm()
                {
                    Detail    = detail,
                    LogType   = LogType.初次访问,
                    Remark    = "访问时间" + DateTime.Now,
                    TabOrModu = "初次请求",
                };
                dataCache.SetCache(firstReqKey, "0", expireType: Expire.Month);
                WriteLog(first);
            }
        }
示例#3
0
        /// <summary>
        /// 记录系统停止日志
        /// </summary>
        public static void WriteServerStopLog()
        {
            string shutDownMessageShort = "不明原因";

            try
            {
#if NET
                HttpRuntime runtime = (HttpRuntime)typeof(System.Web.HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);
                if (runtime == null)
                {
                    return;
                }
                string shutDownMessage    = (string)runtime.GetType().InvokeMember("_shutDownMessage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);
                string shutDownStack      = (string)runtime.GetType().InvokeMember("_shutDownStack", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);
                var    shutDownMessageArr = shutDownMessage.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Take(3).ToArray().Select(a => a.Trim('。').Trim('.').Trim(',').Trim(':'));
                shutDownMessageShort = string.Join(",", shutDownMessageArr);
                //写到事件查看器
                new EventLog().WriteEntry(String.Format("\r\n\r\n_shutDownMessage={0}\r\n\r\n_shutDownStack={1}", shutDownMessage, shutDownStack), EventLogEntryType.Information);
#endif
            }
            catch
            {
            }
            //写到自定义日志中
            string      detail = string.Format("服务器停止,停止原因为[{0}],运行时长{1}", shutDownMessageShort, ClientServerInfo.ServerInfo.GetRunningTime());
            LogTraceEdm stop   = new LogTraceEdm()
            {
                Detail  = detail,
                LogType = LogType.停止,
                Remark  = "停止时间" + DateTime.Now,
            };
            WriteLog(stop);
        }
示例#4
0
        //开启线程,将备份日志写到Appender中
        static void StartThreadToWriteFileToAppender()
        {
            Thread thread = new Thread(() =>
                                       //     thread = new Thread(new ThreadStart(() =>
            {
                Thread.Sleep(1000 * 60);
                while (true)
                {
                    try
                    {
                        ReadBackupLogInFileToAppender();
                    }
                    catch //(Exception ex)
                    {
                        //throw ex;//不能让日志系统的异常导致整个系统的崩溃
                    }
                    finally
                    {
                        Thread.Sleep(logReadThreadSleepNum * 1000); //10秒
                    }
                }
            });

            thread.IsBackground = true;
            thread.Priority     = ThreadPriority.AboveNormal;
            thread.Start();
            LogTraceEdm logModel = new LogTraceEdm()
            {
                Detail = "读备份日志服务启动,服务执行周期为" + logReadThreadSleepNum + "秒"
            };

            // new MyLogApp().
            WriteLog(LogLevel.Info, logModel);
        }
示例#5
0
        //开启定时任务,写监控日志
        static void WriteMonitorLogThread()
        {
            int sleepMillSec = 600000;//10分钟

            try
            {
                int sleepMillSecTemp = AppConfig.GetFinalConfig("logMonitorIntervalMins", 10, LogApi.GetLogMonitorIntervalMins()) * 60000;
                if (sleepMillSecTemp > 0)
                {
                    sleepMillSec = sleepMillSecTemp;
                }
            }
            catch
            {
            }
            if (sleepMillSec <= 0)
            {
                return;
            }

            int    num    = 0;
            Thread thread = new Thread(() =>
                                       //     thread = new Thread(new ThreadStart(() =>
            {
                Thread.Sleep(1000 * 30);
                while (true)
                {
                    try
                    {
                        num++;
                        LogMonitorEdm monitor = new LogMonitorEdm()
                        {
                            Remark = "定时监控"
                        };
                        WriteLog(monitor);
                        WriteModelToFileForDebug(new { 内容 = DateTime.Now.ToString("HH:mm:ss.fff") + " , 第" + num + "次记录监控日志" });
                    }
                    catch
                    {
                    }
                    finally
                    {
                        Thread.Sleep(sleepMillSec);
                    }
                }
            });

            thread.IsBackground = true;
            thread.Priority     = ThreadPriority.AboveNormal;
            thread.Start();
            LogTraceEdm logModel = new LogTraceEdm()
            {
                Detail = "定时监控服务启动,服务执行周期为" + (sleepMillSec / 60000.0) + "分钟"
            };

            WriteLog(logModel);
        }
示例#6
0
        protected ExeResEdm ExecuteNonQuery(string cmdText, LogTraceEdm logMsg, params DbParameter[] parameters)
        {
            ExeResEdm dBResEdm = SqlCMD(cmdText, cmd => cmd.ExecuteNonQuery(), parameters);

            if (dBResEdm.ErrCode == 0)
            {
                dBResEdm.ExeNum = Convert.ToInt32(dBResEdm.ExeModel);
            }
            WriteLogMsg(logMsg, dBResEdm.ExeNum, GetRealSql(cmdText, parameters));
            return(dBResEdm);
        }
示例#7
0
        //static Buffer2DBAppender()
        //{
        //    StartMQTask();
        //}

        //开启线程消费队列中的内容
        void StartMQTask()
        {
            //开启线程消费队列中的内容
            ThreadPool.QueueUserWorkItem(StartWriteTraceDataService, null);   //启动写trace日志数据服务
            ThreadPool.QueueUserWorkItem(StartWriteMonitorDataService, null); //启动写monitor日志数据服务
            LogTraceEdm logModel = new LogTraceEdm()
            {
                Detail = "日志记录的" + BufferType + "消费服务启动"
            };

            LogApi.WriteMsgToDebugFile(new { msg = logModel.Detail });
            // LogApi.WriteLog(LogLevel.Info, logModel);
        }
示例#8
0
        public ExeResEdm ExecuteNonQuery(string cmdText, DBOperUser dbOperUser = null, params DbParameter[] parameters)
        {
            LogTraceEdm logMsg = null;

            if (dbOperUser != null)
            {
                logMsg = new LogTraceEdm()
                {
                    LogType = LogType.ExecuteNonQuery, UserId = dbOperUser.UserId, UserName = dbOperUser.UserName, TabOrModu = "ExecuteNonQuery方法",
                };
            }
            var n = ExecuteNonQuery(cmdText, logMsg, parameters);

            return(n);
        }
示例#9
0
        //记录系统启动日志
        static void WriteServerStartupLog()
        {
#if NET
            string vsVer = ".Net";
#else
            string vsVer = ".Net Core";
#endif
            string      detail = string.Format("服务器启动,操作系统为{0},IIS版本为{1},.NET CLR为{2},开发框架为{3}", ClientServerInfo.ServerInfo.GetServerOS(), ClientServerInfo.ServerInfo.GetIISVerson(), ClientServerInfo.ServerInfo.GetCLRVersion(), vsVer);
            LogTraceEdm start  = new LogTraceEdm()
            {
                Detail  = detail,
                LogType = LogType.启动,
                Remark  = "启动时间" + DateTime.Now,
            };
            WriteLog(start);
        }
示例#10
0
 void WriteLogMsg(DBOperUser logUser, LogType logType, string detail, string module)
 {
     if (logUser != null && !string.IsNullOrEmpty(detail))
     {
         LogTraceEdm logTraceEdm = new LogTraceEdm()
         {
             Detail = detail, TabOrModu = module, LogType = logType
         };
         if (logUser != null)
         {
             logTraceEdm.UserId   = logUser.UserId;
             logTraceEdm.UserName = logUser.UserName;
         }
         WriteLogMsg(logTraceEdm, null, null);
     }
 }
示例#11
0
        /// <summary>
        /// 写用户登录日志
        /// </summary>
        public static string WriteLoginLog(string userId, string userName = "")
        {
            var         client    = ClientServerInfo.ClientInfo.GetClientInfo();
            string      userIP    = client.IP + "[" + client.Host + "]";
            string      loginInfo = "用IP为:" + userIP + ",物理地址为:" + ClientServerInfo.ClientInfo.GetCustomerMac(userIP) + "," + ClientServerInfo.ClientInfo.GetUserAgentInfo() + "的计算机,于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "登录了平台";
            LogTraceEdm model     = new LogTraceEdm()
            {
                UserId    = userId,
                UserName  = userName,
                LogType   = LogType.登录,
                TabOrModu = "登录模块",
                Detail    = loginInfo,
            };

            return(WriteLog(model));
        }
示例#12
0
 /// <summary>
 /// 写异常日志
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static string WriteExceptLog(Exception ex, string module = "异常模块", string remark = "")
 {
     try
     {
         var errMsg = ex.Message;
         try { var innerMsg = ex.InnerException.InnerException.InnerException.Message; errMsg = !string.IsNullOrEmpty(innerMsg) ? innerMsg : errMsg; } catch { }
         LogTraceEdm model = new LogTraceEdm()
         {
             LogType = LogType.异常, Detail = errMsg, Remark = remark, TabOrModu = module,
         };
         return(WriteLog(model));
     }
     catch (Exception ex1)
     {
         return(ex1.Message);
     }
 }
示例#13
0
        void WriteLogMsg(LogTraceEdm logMsg, object res, string keyID, params object[] values)
        {
            var skip = Log2Net.Util.AppConfig.GetConfigValue("SkipQueryTypeLog");

            if (logMsg.LogType == LogType.查询 && skip == "1")
            {
                return;
            }
            if (logMsg != null && (!string.IsNullOrEmpty(logMsg.Detail) || !string.IsNullOrEmpty(logMsg.UserId + logMsg.UserName)))
            {
                try
                {
                    if (string.IsNullOrEmpty(logMsg.Detail))
                    {
                        string valStr = "";
                        if (values != null && values.Length > 0)
                        {
                            valStr = "(" + string.Join(",", values) + ")";
                        }
                        string str = "SQL/条件";
                        if (keyID.Contains("="))
                        {
                            //  str = "语句";
                        }
                        string action = logMsg.LogType.ToString();
                        string msg    = action + "了" + str + "为【" + keyID + "】的" + logMsg.TabOrModu + "记录" + valStr + ",结果为" + res + "。";
                        logMsg.Detail = msg;
                    }
                    int maxLength = 2000;
                    logMsg.Detail = logMsg.Detail.Substring(0, Math.Min(maxLength, logMsg.Detail.Length));//当字段过长时,截取前一部分,防止插入失败
                    try { var logRes = Task.Factory.StartNew(() => Log2Net.LogApi.WriteLog(LogLevel.DBRec, logMsg)); } catch { }
                }
                catch (Exception ex)
                {
                    var exModel = new
                    {
                        ErrMsg         = "写数据失败",
                        DBData         = logMsg,
                        Exception      = ex.Message,
                        InnerException = ex.InnerException == null ? "" : ex.InnerException.Message
                    };
                    Log2Net.LogApi.WriteMsgToInfoFile(exModel);
                }
            }
        }
示例#14
0
        private static Task HandleExceptionAsync(Microsoft.AspNetCore.Http.HttpContext context, int statusCode, string msg)
        {
            var data   = new { code = statusCode.ToString(), is_success = false, msg = msg };
            var result = JsonConvert.SerializeObject(new { data = data });

            LogTraceEdm exLog = new LogTraceEdm()
            {
                Detail    = result,
                LogType   = LogType.异常,
                Remark    = "异常时间" + DateTime.Now,
                TabOrModu = "异常模块",
            };

            // LogApi.WriteLog( LogLevel.Error,exLog);

            context.Response.ContentType = "application/json;charset=utf-8";
            return(context.Response.WriteAsync(result));
        }
示例#15
0
        public ExeResEdm Delete(string tableName, Dictionary <string, object> whereParas, DBOperUser dbLogMsg = null)
        {
            ComDBFun ComDBFun = new ComDBFun(DBBaseAttr);
            string   whereSql = ComDBFun.GetWhereCondition(whereParas.Keys.ToList(), "and", whereParas);
            string   sql      = "delete " + tableName + whereSql;

            DbParameter[] pms    = GetDbParametersFromDic(whereParas);
            LogTraceEdm   logMsg = null;

            if (dbLogMsg != null)
            {
                logMsg = new LogTraceEdm()
                {
                    LogType = LogType.硬删除, UserId = dbLogMsg.UserId, UserName = dbLogMsg.UserName, TabOrModu = tableName,
                };
            }
            var n = ExecuteNonQuery(sql, logMsg, pms);

            return(n);
        }
示例#16
0
        public ExeResEdm Add(string tableName, T model, DBOperUser dbLogMsg = null, params string[] skipCols)
        {
            Dictionary <string, object> dic = DtModelConvert <T> .GetPropertity(model);

            object[] values = dic.Values.ToArray();
            // string idVal = dic.Values.ToArray()[0].ToString();
            //SqlParameter[] pms = GetOleDbParameters(dic.Keys.ToList(), dic.Values.ToList());//参数过多,不会影响程序执行的正确性。
            for (int i = 0; i < skipCols.Length; i++)//自动增长的列要忽略
            {
                dic.Remove(skipCols[i]);
            }

            for (int i = dic.Values.Count - 1; i >= 0; i--)//值为空的不参与
            {
                if (dic.Values.ToList()[i] == null)
                {
                    dic.Remove(dic.Keys.ToList()[i]);
                }
            }
            ComDBFun ComDBFun  = new ComDBFun(DBBaseAttr);
            string   textParas = ComDBFun.GetSQLText(dic.Keys.ToList(), null);
            string   sql       = "insert into " + tableName + textParas;

            DbParameter[] pms = GetDbParametersFromDic(dic);

            LogTraceEdm logMsg = null;

            if (dbLogMsg != null)
            {
                logMsg = new LogTraceEdm()
                {
                    LogType = LogType.添加, UserId = dbLogMsg.UserId, UserName = dbLogMsg.UserName, TabOrModu = tableName,
                };
            }

            var n = ExecuteNonQuery(sql, logMsg, pms);

            return(n);
        }
示例#17
0
 /// <summary>
 /// .NET平台处理异常情况:先写日志再清除异常
 /// </summary>
 /// <param name="url">错误处理完成后跳转到的网址,为空则不跳转</param>
 public static void HandAndWriteException(string url = null)
 {
     try
     {
         if (System.Web.HttpContext.Current.Server.GetLastError() == null)
         {
             return;
         }
         Exception   ex     = System.Web.HttpContext.Current.Server.GetLastError().GetBaseException();
         string      serMsg = string.Format("服务器环境:操作系统{0},IIS版本[{1}],.Net CLR版本[{2}],运行时长[{3}]", ClientServerInfo.ServerInfo.GetServerOS(), ClientServerInfo.ServerInfo.GetIISVerson(), ClientServerInfo.ServerInfo.GetCLRVersion(), ClientServerInfo.ServerInfo.GetRunningTime());
         string      detail = string.Format("URl:{0}\n引发异常的方法:{1}\n错误信息:{2}\n错误堆栈:{3}\n{4}", System.Web.HttpContext.Current.Request.RawUrl, ex.TargetSite, ex.Message, ex.StackTrace, serMsg);
         LogTraceEdm exLog  = new LogTraceEdm()
         {
             Detail    = detail,
             LogType   = LogType.异常,
             Remark    = "异常时间" + DateTime.Now,
             TabOrModu = "异常模块",
         };
         WriteLog(exLog);
     }
     catch
     {
     }
     finally
     {
         try
         {
             System.Web.HttpContext.Current.Server.ClearError();
             if (!string.IsNullOrEmpty(url))
             {
                 System.Web.HttpContext.Current.Response.Redirect(url);
             }
         }
         catch
         {
         }
     }
 }