コード例 #1
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);
                }
            }
        }