Exemple #1
0
        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());
        }
Exemple #2
0
        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);
                        }
                    }
                }
            }
        }