コード例 #1
0
ファイル: LogWorker.cs プロジェクト: zzgzzgok/cyqdata
        private static void DoWork(object p)
        {
            //检测文件夹
            string folder  = AppConfig.WebRootPath;
            string logPath = AppConfig.Log.LogPath;

            if (logPath.StartsWith("~/"))
            {
                logPath = logPath.Substring(2);
            }
            folder = folder + logPath;
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory(folder);
            }
            int empty = 0;

            while (true)
            {
                empty++;
                while (_LogQueue.Count > 0)
                {
                    empty = 0;
                    SysLogs sys = _LogQueue.Dequeue();
                    if (sys == null)
                    {
                        continue;
                    }
                    if (!sys.IsWriteToTxt)
                    {
                        if (sys.Insert(InsertOp.None)) //直接写数据库。
                        {
                            sys.Dispose();
                            continue;
                        }
                    }

                    string todayKey = DateTime.Today.ToString("yyyyMMdd") + ".txt";

                    if (!string.IsNullOrEmpty(sys.LogType))
                    {
                        todayKey = sys.LogType.TrimEnd('_') + '_' + todayKey;
                    }
                    string filePath = folder + todayKey;
                    //检测数据库
                    //检测文件路径:
                    string body = sys.GetFormatterText();
                    IOHelper.Save(filePath, body, true, false);
                    sys.Dispose();
                }
                Thread.Sleep(5000);
                if (empty > 100)
                {
                    //超过10分钟没日志产生
                    hashObj.Clear();
                    threadIsWorking = false;
                    break;//结束线程。
                }
            }
        }
コード例 #2
0
        public static void WriteLogToDB(string message, string logType, string userName)
        {
            string conn = AppConfig.Log.LogConn;

            if (string.IsNullOrEmpty(conn))
            {
                WriteLogToTxt("[LogConnIsEmpty]:" + message);
                return;
            }
            try
            {
                string pageUrl = string.Empty;
                if (AppConfig.IsWeb)
                {
                    System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;
                    pageUrl = request.Url.Scheme + "://" + request.Url.Authority + request.RawUrl;
                }
                else
                {
                    pageUrl = AppConst.RunFolderPath;
                }

                using (SysLogs el = new SysLogs())
                {
                    el.AllowWriteLog = false;
                    el.LogType       = logType.ToString();
                    el.PageUrl       = pageUrl;
                    el.Message       = message;
                    el.UserName      = userName;
                    el.CreateTime    = DateTime.Now;
                    el.Insert(InsertOp.None);
                }
            }
            catch
            {
                WriteLogToTxt("[WriteDbLogError]:" + message);
            }
        }
コード例 #3
0
ファイル: Log.cs プロジェクト: Feng2012/cyqdata
        /// <summary>
        ///  将日志写到数据库中[需要配置LogConn项后方生效 ]
        /// </summary>
        /// <param name="message">日志信息</param>
        /// <param name="logType">日志类型</param>
        /// <param name="userName">用户账号</param>
        public static void WriteLogToDB(string message, string logType, string userName)
        {
            string conn = AppConfig.Log.LogConn;
            if (string.IsNullOrEmpty(conn))
            {
                WriteLogToTxt("[LogConnIsEmpty]:" + message);
                return;
            }
            try
            {
                string pageUrl = string.Empty;
                if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Request != null)
                {
                    System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;
                    pageUrl = request.Url.Scheme + "://" + request.Url.Authority + request.RawUrl;
                }
                else
                {
                    pageUrl = AppConst.RunFolderPath;
                }

                using (SysLogs el = new SysLogs())
                {
                    el.AllowWriteLog = false;
                    el.LogType = logType.ToString();
                    el.PageUrl = pageUrl;
                    el.Message = message;
                    el.UserName = userName;
                    el.CreateTime = DateTime.Now;
                    el.Insert(InsertOp.None);
                }
            }
            catch
            {
                WriteLogToTxt("[WriteDbLogError]:" + message);
            }
        }