Esempio n. 1
0
        /// <summary>
        /// 获取DB文件名
        /// </summary>
        /// <param name="t">当日时间</param>
        /// <returns>字符串,DB文件名</returns>
        private string GetDBFileNameByTime(DateTime t)
        {
            string strCurLogName = t.ToString("yyyy-MM-dd");

            return(FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME
                   + "\\" + strCurLogName + FKLogConsts.SQLITE_LOG_FILE_SUFFIX);
        }
        /// <summary>
        /// 获取指定Task的日志所在的数据库名
        /// </summary>
        /// <param name="nTaskID"></param>
        /// <returns></returns>
        public List <string> GetTaskLogDBFileName(int nTaskID)
        {
            List <string> TaskTimesList = null;

            if (m_SQLiteObject == null)
            {
                // 初次创建DB文件
                FKSystemFileSystemHelper.CreateDir(FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME);
                string str = FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME
                             + "\\" + FKLogConsts.SQLITE_LOG_TASK_TIME_FILE_NAME;
                m_SQLiteObject = new FKSQLiteLogConnection(str);
                if (m_SQLiteObject == null)
                {
                    return(null);
                }
            }

            try
            {
                string sql = "select * from SDBTaskNode where TaskID = " + nTaskID;
                m_SQLiteCmd = m_SQLiteObject.CreateCommand(sql);

                var results = m_SQLiteCmd.ExecuteQuery <FKSQLiteLogTimeNode>().ToArray();
                if (results.Length <= 0)
                {
                    return(null);
                }

                TaskTimesList = new List <string>();
                for (int i = 0; i < results.Length; i++)
                {
                    //存在不同taskid对应的记录在一个db中的情况,需要进行路径过滤
                    string dateDBName = FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME
                                        + "\\" + results[i].LogTime + FKLogConsts.SQLITE_LOG_DIR_NAME;

                    bool bIsAlreadyInclude = false;
                    foreach (string strIt in TaskTimesList)
                    {
                        if (string.Compare(strIt, dateDBName) == 0) // 文件已记录在列表中
                        {
                            bIsAlreadyInclude = true;
                            break;
                        }
                    }
                    if (!bIsAlreadyInclude)
                    {
                        TaskTimesList.Add(dateDBName);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"[Error] Select task time Failed. taskId = {nTaskID} : error = {e.ToString()}");
                return(null);
            }
            return(TaskTimesList);
        }
Esempio n. 3
0
        /// <summary>
        /// 添加一行日志,注意:这里拒绝向外开放,请去使用 FKLogImp 中的接口
        /// </summary>
        /// <param name="eLevel"></param>
        /// <param name="strMsg"></param>
        /// <param name="nTaskID"></param>
        internal void AddLog(ENUM_LogLevel eLevel, string strMsg, int nTaskID = 0)
        {
            try
            {
                if (strMsg == null)
                {
                    strMsg = "Empty message";
                }
                DateTime curTime    = DateTime.Now;
                string   strDayTime = curTime.ToString("yyyy-MM-dd");
                m_strTxtFileName = FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.TEXT_LOG_DIR_NAME
                                   + "\\" + "FKLog." + strDayTime + FKLogConsts.TEXT_LOG_FILE_SUFFIX;

                m_nLogID++;
                if (m_nLogID >= 999999)
                {
                    m_nLogID = 0;
                }

                StackTrace ss               = new StackTrace(true);
                StackFrame sf               = ss.GetFrame(2); // 上两层调用点
                MethodBase mb               = sf.GetMethod(); // 上两层调用函数
                string     strModuleName    = mb.Module.Name;
                string     strNameSpaceName = mb.DeclaringType.Namespace;
                string     strFunctionName  = mb.Name;
                string     strFileName      = sf.GetFileName();          // 文件名
                int        nLine            = sf.GetFileLineNumber();    // 调用行号
                string     strFullName      = mb.ReflectedType.FullName; // 完全限定名
                string     strClassName     = mb.DeclaringType.Name;     // 类名
                string     strThreadName    = Thread.CurrentThread.Name; // 线程名

                string strFinalMsg = FormatString(eLevel, curTime, m_nLogID, strMsg,
                                                  strClassName, strThreadName, strFullName, strFileName, nLine,
                                                  eLevel == ENUM_LogLevel.eLogLevel_Error ? ss.ToString() : "");

                lock (m_objAddLogLock)
                {
                    Console.WriteLine(strFinalMsg);
                    WriteToIDE(eLevel, m_nLogID, strMsg);
                    WriteToFile(eLevel, strFinalMsg);
                    WriteToDB(eLevel, curTime, m_nLogID, strMsg, strFinalMsg, nTaskID);
                }
                //if (string.Compare(strThreadName, "FKLogicThread") != 0) //非主进程,禁止Form输出,不然会有可能出现死锁
                {
                    WriteToForm(eLevel, curTime, m_nLogID, strMsg, strFinalMsg, nTaskID);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"[Error] Add log failed. Error = {e.ToString()}");
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 创建当日DB文件
        /// </summary>
        /// <param name="t">当时时间</param>
        /// <returns>创建后的DB文件对象</returns>
        private FKSQLiteLogConnection CreateDBFileByTime(DateTime t)
        {
            FKSQLiteLogConnection db = null;

            try
            {
                FKSystemFileSystemHelper.CreateDir(FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME);
                db = new FKSQLiteLogConnection(GetDBFileNameByTime(t));
                db.CreateTable <FKSQLiteLogNode>();
            }
            catch (Exception e)
            {
                Console.WriteLine($"[Error] Create DB file Failed. Error = {e.ToString()}");
                return(null);
            }
            return(db);
        }
Esempio n. 5
0
        private SQLiteCommand m_SqlCmd           = null;     // 等待被指定的数据库命令

        /// <summary>
        /// 是否已经存在当日DB文件
        /// </summary>
        /// <param name="t">当前时间</param>
        /// <returns>true表示已经存在当日DB文件</returns>
        private bool IsDBFileExistByTime(DateTime t)
        {
            try
            {
                if (m_DBObject == null)
                {
                    return(false);
                }

                FKSystemFileSystemHelper.CreateDir(FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.SQLITE_LOG_DIR_NAME);
                string strDBFileName = GetDBFileNameByTime(t);
                return(m_DBObject.DatabasePath.CompareTo(strDBFileName) == 0);
            }
            catch (Exception e)
            {
                Console.WriteLine($"[Error] Check if a DB file existed failed. Error = {e.ToString()}");
                return(false);
            }
        }
Esempio n. 6
0
 /// <summary>
 /// 写Log到File文件中
 /// </summary>
 /// <param name="eLevel"></param>
 /// <param name="nLogID"></param>
 /// <param name="strMsg"></param>
 /// <param name="strFinalMsg"></param>
 private void WriteToFile(ENUM_LogLevel eLevel, string strFinalMsg)
 {
     try
     {
         if (((int)eLevel) < ((int)ENUM_LogLevel.eLogLevel_Info))
         {
             return;
         }
         FKSystemFileSystemHelper.CreateDir(FKSystemFileSystemHelper.GetWorkdir() + "\\" + FKLogConsts.TEXT_LOG_DIR_NAME);
         using (StreamWriter w = File.AppendText(m_strTxtFileName))
         {
             w.WriteLine(strFinalMsg);
         }
     }
     catch
     {
         // 这里暂时不需要做处理,因为该函数调用频率很高,且重要性不高
     }
 }
Esempio n. 7
0
        /// <summary>
        /// 启动一种类型的IEWebDriver
        /// </summary>
        /// <param name="strBrowserName"></param>
        /// <returns></returns>
        private static IWebDriver StartEmdedWebDriver(string strBrowserName)
        {
            switch (strBrowserName)
            {
            case browser_Firefox:
                return(new FirefoxDriver());

            case browser_Chrome:
                return(new ChromeDriver());

            case browser_InternetExplorer:
                return(new InternetExplorerDriver(FKSystemFileSystemHelper.GetWorkdir(), new InternetExplorerOptions(), TimeSpan.FromMinutes(1)));

            case browser_PhantomJS:
                return(new PhantomJSDriver());

            case browser_Safari:
                return(new SafariDriver());

            default:
                throw new ArgumentException(String.Format(@"<{0}> 类型浏览器不被支持。请注意区分大小写。", strBrowserName),
                                            "浏览器类型名");
            }
        }