private void InitializeScheduler() { _cronObjectList = new List <CronObject>(); _serviceSettings = new ServiceSettings(""); _serviceLogger = new Logging.TaskLogging(); if (!_serviceSettings.EnableScheduler) { _serviceLogger.CreateLogRecord("Shceduller start forbidden by ServiceSettings.enableScheduler"); return; } foreach (var type in Tasks.TasksEnumerator.GetTaskEnumertor()) { var task = Activator.CreateInstance(type) as TaskBase; foreach (var group in new SettingsGroupsCollection(task.TaskSettings)) { if (!(bool)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameEnable(task, group))) { continue; } try { _cronObjectList.Add(CreateCronObject(type, group, (string)_serviceSettings.GetPropertyValue(ServiceSettings.GetSettingNameShedule(task, group)))); } catch (Exception e) { _serviceLogger.CreateLogRecord(e); } } } }
public static TaskLogging GetTaskLogging(string source, IEnumerable <LogMessage.MessageStruct> messages) { var taskLogging = new TaskLogging() { Source = source }; foreach (var message in messages) { taskLogging._logMessageList.Add(new LogMessage(source, message.Message, message.EntryType, message.DateTime)); } return(taskLogging); }
public static MessageGroup AddLogRecords(TaskLogging taskLogging, string taskName) { using (var connection = Connection) { var task = GetTask(connection, taskName); var logGroup = AddLogGroup(connection, taskLogging, task); foreach (var logMessage in taskLogging.Where(t => !t.IsSaved)) { AddLogRecord(connection, logMessage, logGroup); logMessage.IsSaved = true; } return(logGroup); } }
private static MessageGroup AddLogGroup(LiteDatabase connection, TaskLogging taskLogging, Task task) { var messageGroups = connection.GetCollection <MessageGroup>(nameof(MessageGroup)); var messageGroup = new MessageGroup() { Task = task, DateTime = DateTime.Now, IsErrorLog = taskLogging.ErrorAccured(), MessageSent = false, EntryType = EventLogEntryType.Information }; messageGroups.Insert(messageGroup); messageGroups.EnsureIndex(t => t.DateTime); return(messageGroup); }
public static void SendLogRecords(string taskName, int sendReportIntervalInSeconds, EventLogEntryType ReportInformationLevel = EventLogEntryType.Error) { using (var connection = Connection) { var task = GetTask(connection, taskName); var lastReportSentDateTime = GetLastGroupReportSent(task); if (lastReportSentDateTime.AddSeconds(sendReportIntervalInSeconds) > DateTime.Now) { return; } var messageGroups = connection.GetCollection <MessageGroup>(nameof(MessageGroup)).FindAll().Where(t => t.Task.Id == task.Id && t.EntryType <= ReportInformationLevel && !t.MessageSent); var taskLoggingList = (from messageGroup in messageGroups select connection.GetCollection <Message>(nameof(Message)).FindAll().Where(t => t.MessageGroup.Id == messageGroup.Id && t.EntryType <= ReportInformationLevel).OrderBy(t => t.DateTime) into messagesList select messagesList.Select(t => new LogMessage.MessageStruct() { Message = $"ID {t.Id} {t.MessageText}", EntryType = t.EntryType, DateTime = t.DateTime }) into messages select TaskLogging.GetTaskLogging(task.TaskName, messages)).ToList(); if (taskLoggingList.Count == 0) { return; } var result = ReportMailSender.SendLogArray(taskLoggingList); if (!result) { return; } foreach (var messageGroup in messageGroups) { messageGroup.MessageSent = true; connection.GetCollection <MessageGroup>(nameof(MessageGroup)).Update(messageGroup); } } }