/// <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); }
/// <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()}"); } }
/// <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); }
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); } }
/// <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 { // 这里暂时不需要做处理,因为该函数调用频率很高,且重要性不高 } }
/// <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), "浏览器类型名"); } }