private static string GetLogLine(DateTime logDate, LogEntryType logEntryType, JobInstance jobInstance, JobStepInstance jobStepInstance, JobBatch jobBatch, string message) { StringBuilder fullLine = new StringBuilder(); fullLine.Append(logDate); fullLine.Append("\t"); fullLine.Append(logEntryType); fullLine.Append("\t"); fullLine.Append(string.Format("{0} ({1})", jobInstance.Integration.Name, jobInstance.Integration.Id)); fullLine.Append("\t"); fullLine.Append(string.Format("{0} ({1})", jobBatch.AssociatedDataSource.DataSource.Name, jobBatch.AssociatedDataSource.DataSource.Id)); fullLine.Append("\t"); fullLine.Append(string.Format("{0} ({1})", jobInstance.Job.Name, jobInstance.Job.Id)); fullLine.Append("\t"); fullLine.Append(string.Format("{0} ({1})", jobInstance.QueueRequest.InvocationSourceType, jobInstance.QueueRequest.Id)); fullLine.Append("\t"); fullLine.Append(jobInstance.Id); fullLine.Append("\t"); fullLine.Append(JobFilterHelper.GetTextForDatabase(jobInstance.Filters)); fullLine.Append("\t"); fullLine.Append(string.Format("{0} ({1})", jobStepInstance.JobStep.Name, jobStepInstance.JobStep.Id)); fullLine.Append("\t"); fullLine.Append(jobStepInstance.Id); fullLine.Append("\t"); fullLine.Append(message); return(fullLine.ToString()); }
public void WriteToLog(LogEntryType logEntryType, Integration integration, DataSource dataSource, JobInstance jobInstance, JobStepInstance jobStepInstance, string message) { string path = null; for (int i = 0; i <= NUMBER_OF_FILEACCESS_RETRIES; i++) { try { if (integration == null) { path = GetServiceLogPathAndFileName(); } else { path = GetIntegrationLogPathAndFileName(integration); } break; } catch (IOException) { if (i == NUMBER_OF_FILEACCESS_RETRIES) { throw; } else { Thread.Sleep(DELAY_ON_FILEACCES_RETRY); } } } lock (_lock) { for (int i = 0; i <= NUMBER_OF_FILEACCESS_RETRIES; i++) { try { using (TextWriter log = File.AppendText(path)) { StringBuilder logLine = new StringBuilder(); logLine.Append(DateTime.Now); logLine.Append("\t"); logLine.Append(logEntryType); logLine.Append("\t"); if (integration == null) { logLine.Append("N/A"); } else { logLine.Append(string.Format("{0} ({1})", integration.Name, integration.Id)); } logLine.Append("\t"); if (dataSource == null) { logLine.Append("N/A"); } else { logLine.Append(string.Format("{0} ({1})", dataSource.Name, dataSource.Id)); } logLine.Append("\t"); if (jobInstance == null) { logLine.Append("N/A\tN/A\tN/A\tN/A\t"); } else { logLine.Append(string.Format("{0} ({1})", jobInstance.Job.Name, jobInstance.Job.Id)); logLine.Append("\t"); logLine.Append(string.Format("{0} ({1})", jobInstance.QueueRequest.InvocationSourceType, jobInstance.QueueRequest.Id)); logLine.Append("\t"); logLine.Append(jobInstance.Id); logLine.Append("\t"); logLine.Append(JobFilterHelper.GetTextForDatabase(jobInstance.Filters)); logLine.Append("\t"); } if (jobStepInstance == null) { logLine.Append("N/A\tN/A\t"); } else { logLine.Append(string.Format("{0} ({1})", jobStepInstance.JobStep.Name, jobStepInstance.JobStep.Id)); logLine.Append("\t"); logLine.Append(jobStepInstance.Id); logLine.Append("\t"); } logLine.Append(message); log.WriteLine(logLine); log.Flush(); log.Close(); if (integration == null) { serviceLogFileInfo.CurrentFileSizeInBytes += logLine.Length; } else { logFileInfoByIntegrationId[integration.Id].CurrentFileSizeInBytes += logLine.Length; } } break; } catch (IOException) { if (i == NUMBER_OF_FILEACCESS_RETRIES) { throw; } else { Thread.Sleep(DELAY_ON_FILEACCES_RETRY); } } } } }