コード例 #1
0
        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);
                    }
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
                }
            }
        }