public async Task RotateAsyncTest_Remove13days() { string eventLogsTempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString(), "test_eventlogs"); Directory.CreateDirectory(eventLogsTempPath); DateTime now = DateTime.UtcNow; await WriteEventLog(eventLogsTempPath, "test-01.log", epoch : now.AddDays(-12).ToUnixEpoch()); await WriteEventLog(eventLogsTempPath, "test-02.log", epoch : now.AddDays(-13).ToUnixEpoch()); await WriteEventLog(eventLogsTempPath, "test-03.log", epoch : now.AddDays(-14).ToUnixEpoch()); await WriteEventLog(eventLogsTempPath, "test-04.log", epoch : now.AddDays(-15).ToUnixEpoch()); _mockLocalPathService.SetupGet(x => x.EventLogDirPath).Returns(eventLogsTempPath); await Task.Delay(1500); EventLogRepository unitUnderTest = CreateRepository(); await unitUnderTest.RotateAsync(13 * 24 * 60 * 60); _mockLoggerService.Verify(x => x.Info(It.Is <string>(x => x.StartsWith("file:")), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Exactly(4)); _mockLoggerService.Verify(x => x.Info("Delete", It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Exactly(3)); _mockLoggerService.Verify(x => x.Info("Keep", It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Once()); _mockLoggerService.Verify(x => x.Exception(It.IsAny <string>(), It.IsAny <Exception>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Never()); Assert.True(File.Exists(Path.Combine(eventLogsTempPath, "test-01.log"))); Assert.False(File.Exists(Path.Combine(eventLogsTempPath, "test-02.log"))); Assert.False(File.Exists(Path.Combine(eventLogsTempPath, "test-03.log"))); Assert.False(File.Exists(Path.Combine(eventLogsTempPath, "test-04.log"))); Directory.Delete(eventLogsTempPath, true); }
public RemoteTaskQueue(ILog logger, ISerializer serializer, IGlobalTime globalTime, ICassandraCluster cassandraCluster, IRtqSettings rtqSettings, IRtqTaskDataRegistry taskDataRegistry, IRtqProfiler rtqProfiler) { QueueKeyspace = rtqSettings.QueueKeyspace; TaskTtl = rtqSettings.TaskTtl; Logger = logger.ForContext("CassandraDistributedTaskQueue"); Serializer = serializer; GlobalTime = globalTime; TaskDataRegistry = taskDataRegistry; enableContinuationOptimization = rtqSettings.EnableContinuationOptimization; minTicksHolder = new RtqMinTicksHolder(cassandraCluster, rtqSettings); TaskMinimalStartTicksIndex = new TaskMinimalStartTicksIndex(cassandraCluster, serializer, rtqSettings, new OldestLiveRecordTicksHolder(minTicksHolder), Logger); var taskMetaStorage = new TaskMetaStorage(cassandraCluster, serializer, rtqSettings, Logger); EventLogRepository = new EventLogRepository(serializer, cassandraCluster, rtqSettings, minTicksHolder); childTaskIndex = new ChildTaskIndex(cassandraCluster, rtqSettings, serializer, taskMetaStorage); HandleTasksMetaStorage = new HandleTasksMetaStorage(taskMetaStorage, TaskMinimalStartTicksIndex, EventLogRepository, GlobalTime, childTaskIndex, taskDataRegistry, Logger); TaskDataStorage = new TaskDataStorage(cassandraCluster, rtqSettings, Logger); TaskExceptionInfoStorage = new TaskExceptionInfoStorage(cassandraCluster, serializer, rtqSettings, Logger); HandleTaskCollection = new HandleTaskCollection(HandleTasksMetaStorage, TaskDataStorage, TaskExceptionInfoStorage, rtqProfiler); lazyRemoteLockCreator = new Lazy <IRemoteLockCreator>(() => { var remoteLockImplementationSettings = CassandraRemoteLockImplementationSettings.Default(rtqSettings.QueueKeyspace, RtqColumnFamilyRegistry.LocksColumnFamilyName); var remoteLockImplementation = new CassandraRemoteLockImplementation(cassandraCluster, serializer, remoteLockImplementationSettings); var remoteLockerMetrics = new RemoteLockerMetrics($"{rtqSettings.QueueKeyspace}_{RtqColumnFamilyRegistry.LocksColumnFamilyName}"); return(new RemoteLocker(remoteLockImplementation, remoteLockerMetrics, Logger)); }); Profiler = rtqProfiler; }
public EventLog(ISessionContext sessionContext, BranchContext branchContext, IHttpContextAccessor accessor, EventLogRepository repository) { _sessionContext = sessionContext; _branchContext = branchContext; _accessor = accessor; _repository = repository; }
public EventLogController(EventLogRepository repository, ISessionContext sessionContext, BranchContext branchContext, EventLogExcelBuilder excelBuilder, IStorage storage) { _repository = repository; _sessionContext = sessionContext; _branchContext = branchContext; _excelBuilder = excelBuilder; _storage = storage; }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); _Repository = new EventLogRepository(MTApp.CurrentRequestContext); if (!Page.IsPostBack) { LoadEventsByCriteria(); } }
protected virtual void Dispose(bool disposing) { if (disposing) { if (_repository != null) { _repository.Dispose(); _repository = null; } } }
public HomeController(AdminRepository adminRepository, UserRepository userRepository, OffenceRepository offenceRepository, MainRepository mainRepository, EventLogRepository eventLogRepository) { this.adminRepository = adminRepository; this.userRepository = userRepository; this.offenceRepository = offenceRepository; this.mainRepository = mainRepository; this.eventLogRepository = eventLogRepository; }
public async Task RotateAsyncTest_NoDir() { string eventLogsTempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString(), "test_eventlogs"); _mockLocalPathService.SetupGet(x => x.EventLogDirPath).Returns(eventLogsTempPath); EventLogRepository unitUnderTest = CreateRepository(); await unitUnderTest.RotateAsync(14 * 24 * 60 * 60); _mockLoggerService.Verify(x => x.Info(It.Is <string>(x => x.StartsWith("file:")), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Never()); _mockLoggerService.Verify(x => x.Info("Delete", It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Never()); _mockLoggerService.Verify(x => x.Info("Keep", It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Never()); }
public string[] GetRecentTaskIds([CanBeNull] Timestamp fromTimestampExclusive, [NotNull] Timestamp toTimestampInclusive) { if (fromTimestampExclusive >= toTimestampInclusive) { return(new string[0]); } var firstEventTicks = EventLogRepository.GetFirstEventTicks(); if (firstEventTicks == 0) { return(new string[0]); } var recentTaskIds = new HashSet <string>(); var exclusiveStartColumnName = fromTimestampExclusive == null || fromTimestampExclusive.Ticks < firstEventTicks ? EventPointerFormatter.GetMaxColumnNameForTicks(firstEventTicks - 1) : EventPointerFormatter.GetMaxColumnNameForTimestamp(fromTimestampExclusive); var inclusiveEndColumnName = EventPointerFormatter.GetMaxColumnNameForTimestamp(toTimestampInclusive); var partitionKey = EventPointerFormatter.GetPartitionKey(EventPointerFormatter.GetTimestamp(exclusiveStartColumnName).Ticks); const int eventsToFetch = int.MaxValue - 1; while (true) { var eventsBatch = EventLogRepository.GetEvents(partitionKey, exclusiveStartColumnName, inclusiveEndColumnName, eventsToFetch, out var currentPartitionIsExhausted); foreach (var(@event, _) in eventsBatch) { recentTaskIds.Add(@event.TaskId); } if (!currentPartitionIsExhausted) { throw new InvalidOperationException("currentPartitionIsExhausted == false"); } var nextPartitionStartTicks = (EventPointerFormatter.ParsePartitionKey(partitionKey) + 1) * EventPointerFormatter.PartitionDurationTicks; if (nextPartitionStartTicks > toTimestampInclusive.Ticks) { return(recentTaskIds.ToArray()); } partitionKey = EventPointerFormatter.GetPartitionKey(nextPartitionStartTicks); exclusiveStartColumnName = EventPointerFormatter.GetMaxColumnNameForTicks(nextPartitionStartTicks - 1); } }
private void QueryDatabase(int?page, LogReadViewModel vwModel) { if (vwModel.Description == null && vwModel.TimeFrom == DateTime.MinValue && vwModel.TimeTo == DateTime.MinValue) { return; } ViewBag.OnePageOfLogs = new List <LogReadViewModel>().ToPagedList(1, 1); var dbModel = new List <EventLogModel>(); if (Session["dbModel"] == null) { dbModel = new EventLogRepository(connection).SelectListBetween(vwModel.TimeFrom, vwModel.TimeTo); Session["dbModel"] = dbModel; } else { dbModel = (List <EventLogModel>)Session["dbModel"]; vwModel.TimeFrom = new DateTime(vwModel.TimeFrom.Year, vwModel.TimeFrom.Month, vwModel.TimeFrom.Day); } //Filter TaskCategory if (vwModel.TaskCategory > 0) { dbModel = dbModel.Where(x => x.TaskCategory == vwModel.TaskCategory).ToList(); } //Filter Description if (vwModel.Description != null) { dbModel = dbModel.Where(x => x.Description.Contains(vwModel.Description)).ToList(); } Mapper.Initialize(cfg => cfg.CreateMap <EventLogModel, LogReadViewModel>()); var vwModel2 = Mapper.Map <List <LogReadViewModel> >(dbModel); var pageNumber = page ?? 1; var onePageOfLogs = vwModel2.ToPagedList(pageNumber, 25); ViewBag.OnePageOfLogs = onePageOfLogs; }
public Logger() { _repository = new EventLogRepository(); }
static void Main(string[] args) { // Переопределяем точку назначения запись // EventLogRepository.Instance[""].Sender = new EmailTarget(smtpServer: "smtp.mail.ru", smtpPort: 25, from: TestEmail.EventEmail1.From, password: TestEmail.EventEmail1.Password, mailto: "*****@*****.**", subject: "Message from EventLog system", attachFile: null); /* " from: TestEmail.EventEmail1.From, password: TestEmail.EventEmail1.Password " * * namespace ExerciseLog * { * public static class TestEmail * { * public static class EventEmail1 * { * public static string From = "*****@*****.**"; * public static string Password = "******"; * } * } * } * */ // EventLogRepository.DefaultLog.Sender = new MsEventLogJournalTarget(eventJournalSource: "Application",codeEvent: 55555, category: 6); // Переопределяем точку назначения запись для дефолтного лога // EventLogRepository.DefaultLog.Sender = new FileTarget("dedault.log"); EventLogRepository.DefaultLog.Sender = new MsEventLogJournalTarget(eventJournalSource: "Application", codeEvent: 55555, category: 6); EventLogRepository.DefaultLog.Sender.SetFormat(@"{number:true} {date:dd.MM.yyyy} {time:HH:MM:ss} {importance:true} {message:true}"); //EventLogRepository.DefaultLog.SetLevel(EventOption.Trace); string eks = ""; // Инициализируем экземпляр словаря eks = "one"; EventLogRepository.Create(eks); // Переопределяем точку назначения запись EventLogRepository.Instance[eks].Sender = new FileTarget("log.log"); EventLogRepository.Instance[eks].Sender.SetFormat(@"{number:true} {time:HH:MM:ss} {importance:true} {message:true}"); //EventLogRepository.Instance[eks].SetLevel(EventOption.Fatal); // Инициализируем экземпляр словаря eks = "two"; EventLogRepository.Create(eks); // Переопределяем точку назначения запись EventLogRepository.Instance[eks].Sender = new MsEventLogJournalTarget(eventJournalSource: "Application", codeEvent: 55555, category: 6); EventLogRepository.Instance[eks].Sender.SetFormat(@"{number:true} {time:HH:MM:ss} {message:true}"); //EventLogRepository.Instance[eks].SetLevel(EventOption.Info); // Пишем в именной лог one eks = "one"; // Fatal, Error, Warn, Info, Debug, Trace => Тестируем с помощью единого метода CreateEventLog Console.WriteLine("Тестирование CreateEventLog с использованием enum EventOption\n"); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].CreateEventLog()", eks); EventLogRepository.Instance[eks].CreateEventLog("Fall event", EventOption.Fatal); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].CreateEventLog()", eks); EventLogRepository.Instance[eks].CreateEventLog("Error event", EventOption.Error); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].CreateEventLog()", eks); EventLogRepository.Instance[eks].CreateEventLog("Warn event", EventOption.Warn); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].CreateEventLog()", eks); EventLogRepository.Instance[eks].CreateEventLog("Info event", EventOption.Info); // А вот тут я хочу записать в логгер по умолчанию Console.WriteLine("\nТестирование EventLogRepository.DefaultLog.CreateEventLog()"); EventLogRepository.DefaultLog.CreateEventLog("Debug event", EventOption.Debug); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].CreateEventLog()", eks); EventLogRepository.Instance[eks].CreateEventLog("Trace event", EventOption.Trace); Console.WriteLine("\nТестирование Log#"); // Fatal, Error, Warn, Info, Debug, Trace => Тестируем с помощью метода Log# Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].LogFatal", eks); EventLogRepository.Instance[eks].LogFatal("Fall event"); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].LogError", eks); EventLogRepository.Instance[eks].LogError("Error event"); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].LogWarn", eks); EventLogRepository.Instance[eks].LogWarn("Warn event"); // а теперь попишем в логер "two" eks = "two"; Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].LogInfo", eks); EventLogRepository.Instance[eks].LogInfo("Info event"); Console.WriteLine("\nТестирование EventLogRepository.Instance[{0}].LogDebug", eks); EventLogRepository.Instance[eks].LogDebug("Debug event"); // и снова пишем в "one" eks = "one"; // Но я передумал и написал в лог по умолчанию. Console.WriteLine("\nТестирование EventLogRepository.DefaultLog].LogTrace"); EventLogRepository.DefaultLog.LogTrace("Trace event"); Console.WriteLine("\n -= ВСЕ =-"); // Что должно получится при условие // 1 - EventLogRepository.DefaultLog.Sender = new ConsoleTarget(); // 2 - EventLogRepository.Instance["one"].Sender = new ConsoleTarget(); // 3 - EventLogRepository.Instance["two"].Sender = new MsEventLogJournalTarget(); // // Записей на консоле: // - DefaultLog = 2 записи // - Instance["one"] = 8 записей // Записей в Журнал Windows(Приложения) // - Instance["two"] = 2 записи // // Console.WriteLine("Записей из 2 / {0}", EventLogRepository.DefaultLog.EventLogList.Count); // Console.WriteLine("Записей из 8 / {0}", EventLogRepository.Instance["one"].EventLogList.Count); // Console.WriteLine("Записей из 2 / {0}", EventLogRepository.Instance["two"].EventLogList.Count); // // Тест пройдет. Console.ReadKey(); }