/// <summary> /// Create a new tbl_SLA_FileChecker object. /// </summary> /// <param name="id">Initial value of the ID property.</param> public static tbl_SLA_FileChecker Createtbl_SLA_FileChecker(global::System.Int32 id) { tbl_SLA_FileChecker tbl_SLA_FileChecker = new tbl_SLA_FileChecker(); tbl_SLA_FileChecker.ID = id; return tbl_SLA_FileChecker; }
public static void RunScheduledTasks() { var transactionOptions = new System.Transactions.TransactionOptions(); transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted; using (var transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, transactionOptions)) { using (DashboardEntities ef = new DashboardEntities()) { IList<string> listConfig = GetDashboardLogConfigs(ef); foreach (string config in listConfig) { string dir = config; string ext = "*.*"; DataTable dt = GetDataTable(); DataTable dtStats = GetStatsDataTable(); List<string> listOfSupressedErrors = GetListOfSupressedErrors(); foreach (String file in Directory.GetFiles(dir, ext)) { if (File.GetLastWriteTime(file) > DateTime.Now.AddDays(-1)) { try { using (var r = new StreamReader(file)) { FileInfo fi = new FileInfo(file); _bitsList = file.Split('\\').ToList<string>(); string record = ""; string server = _bitsList[2]; string bitsInstance = _bitsList[4]; foreach ( var source in ef.tbl_SLA_DashboardLogs.OrderByDescending(a => a.StartTime) .Where(a => a.Server == server && a.BITSInstance == bitsInstance)) { tbl_SLA_DashboardLogs logstemp = source; maxDateTime = (DateTime)logstemp.StartTime; break; } // maxDateTime = maxDateTime.AddDays(-2); maxDateTime = maxDateTime.AddMinutes(-10); while ((record = r.ReadLine()) != null) { try { DateTime recDate; if (record.Length < 19 || !DateTime.TryParse(record.Substring(0, 19), out recDate)) continue; DataRow dr = dt.NewRow(); dr["Date"] = Convert.ToDateTime(record.Substring(0, 19)); dr["Level"] = record.Substring(24, 6).Trim().ToString(CultureInfo.InvariantCulture); int idx1 = record.IndexOf("ID=", StringComparison.Ordinal); if (idx1 < 0) continue; string kc = record.Substring(idx1); int idx2 = kc.IndexOf(" -", StringComparison.Ordinal); kc = kc.Substring(3, idx2 - 3); if (kc != "(null)") { dr["KeyCode"] = kc; dr["Message"] = record.Substring(idx1 + idx2); if (dr["Level"].ToString() != "INFO") dt.Rows.Add(dr); if (record.Contains("Beginning executing job") && record.Contains("Execution mode")) { DataRow drStat = dtStats.NewRow(); drStat["KeyCode"] = kc; drStat["Name"] = record.Substring(record.IndexOf("Beginning executing job ", StringComparison.Ordinal)) .Replace("Beginning executing job ", "") .Replace("_Job in Execution mode.", ""); drStat["StartTime"] = dr["Date"]; try { if (maxDateTime <= (DateTime)drStat["StartTime"]) dtStats.Rows.Add(drStat); } catch { } } DataRow foundRow = dtStats.Rows.Find(kc); if (foundRow != null) { foundRow.BeginEdit(); foundRow["EndTime"] = dr["Date"]; foundRow["Seconds"] = ((DateTime)foundRow["EndTime"] - (DateTime)foundRow["StartTime"]) .Seconds; foundRow["Server"] = _bitsList[2]; foundRow["BITSInstance"] = _bitsList[4]; foundRow["Message"] = dr["Message"].ToString().Replace(",", " ;"); // Todo: if ( dr["Message"].ToString() .Contains("Beginning write to file")) { String[] data = record.Replace(" ", " ").Split(new char[] { ' ' }); tbl_SLA_FileChecker filesChecker = new tbl_SLA_FileChecker(); filesChecker.jobKeyCode = kc; filesChecker.FileName = data[9]; if (Convert.ToDateTime(record.Substring(0, 19)) >= maxDateTime) ef.AddTotbl_SLA_FileChecker(filesChecker); } foundRow.EndEdit(); } else if (foundRow == null) { if (maxDateTime <= (DateTime)dr["Date"]) { DataRow runRow = dtStats.NewRow(); runRow["KeyCode"] = kc; runRow["BITSInstance"] = _bitsList[4]; runRow["Message"] = record.Substring(idx1 + idx2); runRow["Name"] = record.Substring( record.IndexOf("Beginning executing job ", System.StringComparison.Ordinal)) .Replace("Beginning executing job ", "") .Replace("_Job in Execution mode.", ""); runRow["StartTime"] = dr["Date"]; dtStats.Rows.Add(runRow); } } } Console.WriteLine("KEycode=" + kc); String[] data1 = record.Replace(" ", " ").Split(new[] { ' ' }); tbl_SLA_BITSJobRequest reuestRequest = new tbl_SLA_BITSJobRequest(); reuestRequest.RequestTime = Convert.ToDateTime(record.Substring(0, 19)); reuestRequest.JobName = data1[7].Replace("_Job.", ""); reuestRequest.RequestedBy = data1[10].Replace("FOUNTAINHEAD\\", ""); reuestRequest.MachineName = data1[12]; foreach (var s in dtStats.Select("Name Like '%" + reuestRequest.JobName + "%'")) { reuestRequest.KeyCode = s["KeyCode"].ToString(); } if (Convert.ToDateTime(record.Substring(0, 19)) >= maxDateTime && reuestRequest.JobName.Contains("ADHOC") && reuestRequest.KeyCode != String.Empty) ef.AddTotbl_SLA_BITSJobRequest(reuestRequest); } catch (Exception ex) { Console.Write(ex); } } } } catch (Exception) { ; } foreach (DataRow drStat in dtStats.Rows) { tbl_SLA_DashboardLogs logs = new tbl_SLA_DashboardLogs(); logs.Server = drStat["Server"].ToString(); logs.BITSInstance = drStat["BITSInstance"].ToString(); logs.KeyCode = drStat["KeyCode"].ToString(); logs.Name = drStat["Name"].ToString().Replace("_Job in Initialization mode.", ""); logs.StartTime = (DateTime?)drStat["StartTime"]; logs.EndTime = (DateTime?)drStat["EndTime"]; TimeSpan diffTime = (TimeSpan)(logs.EndTime - logs.StartTime); logs.Seconds = (int?)diffTime.TotalMinutes; logs.Message = drStat["Message"].ToString().Replace("\n", "|").Replace("\t", " "); // Error handeling if (IsError(logs.Message) && listOfSupressedErrors.Contains(logs.Message)) logs.Status = "Error"; else if (drStat["Status"].ToString() == String.Empty) { double timeDiff = diffTime.TotalMinutes * 60; logs.Status = timeDiff > 0 ? "Completed" : "Running"; } else if (drStat["Status"].ToString() == "Started") { logs.Status = "Running"; } if (logs.StartTime >= maxDateTime) ef.AddTotbl_SLA_DashboardLogs(logs); } try { ef.SaveChanges(); } catch { ; } finally { transactionScope.Complete(); } } } } } } }
/// <summary> /// Deprecated Method for adding a new object to the tbl_SLA_FileChecker EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddTotbl_SLA_FileChecker(tbl_SLA_FileChecker tbl_SLA_FileChecker) { base.AddObject("tbl_SLA_FileChecker", tbl_SLA_FileChecker); }