public async Task <ActionResult> GetCustomLogs([FromQuery] Page page) { var username = _userManager.GetUserName(HttpContext.User); _logger.LogInformation(LoggingEvents.ListItems, "{username} getting custom logs", username); if (!ModelState.IsValid) { _logger.LogWarning(LoggingEvents.ListItemsFail, "{username} failed getting custom logs, Model state is not valid.", username); return(BadRequest(ModelState)); } return(Ok(await _loggingService.GetLogMessagesAsync(page.PageNumber, page.PageSize))); }
public async Task <IActionResult> Logs(LogMessagesFilterViewModel model) { if (model.Id.HasValue) { return(RedirectToActionPermanent("Log", new { id = model.Id.Value })); } try { ViewBag.Messages = await _loggingService.GetLogMessagesAsync(model.ToLogMessagesFilterModel()); } catch (System.Exception e) { _logger.LogWarning(LoggingEvents.HomeController.AsInt(), e, "Bad filter for logs"); return(BadRequest("Bad filter parameters")); } ViewBag.FilterData = await _loggingService.GetAvailableFilterDataAsync(); if (ViewBag.Messages.Count == 0) { TempData["MessageSeverity"] = "warning"; TempData["MessageContent"] = $"No log messages found in the system."; } return(View(model)); }
public async Task GetsLogMessages() { // Arrange var twoDaysAgo = DateTime.UtcNow.AddDays(-2); var hourAgo = DateTime.UtcNow.AddHours(-1); var now = DateTime.UtcNow; var logEntries = new List <LogEntry> { new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Debug.AsInt() }, Category = LoggingEvents.Clean.AsInt(), Source = "the-source-1", Timestamp = twoDaysAgo }, new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Info.AsInt() }, Category = LoggingEvents.Clean.AsInt(), Source = "the-source-2", Timestamp = twoDaysAgo }, new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Debug.AsInt() }, Category = LoggingEvents.Clean.AsInt(), Source = "the-source-1", Timestamp = hourAgo }, new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Error.AsInt() }, Category = LoggingEvents.ActionFilters.AsInt(), Source = "the-source-2", Timestamp = now }, new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Error.AsInt() }, Category = LoggingEvents.Cache.AsInt(), Source = "the-source-3", Timestamp = hourAgo }, new LogEntry { Severity = new LogEntrySeverity { Id = LogEntrySeverities.Detail.AsInt() }, Category = LoggingEvents.ActionFilters.AsInt(), Source = "the-source-2", Timestamp = now } }; await _context.LogEntries.AddRangeAsync(logEntries); await _context.SaveChangesAsync(); var expectedBySource = // the-source 2 new List <LogEntry> { logEntries[1], logEntries[3], logEntries[5] }; var expectedByCategory = // ActionFilters new List <LogEntry> { logEntries[3], logEntries[5] }; var expectedBySeverity = // Debug new List <LogEntry> { logEntries[0], logEntries[2] }; var expectedByStart = // hourAgo new List <LogEntry> { logEntries[2], logEntries[3], logEntries[4], logEntries[5] }; var expectedByEnd = // hourAgo new List <LogEntry> { logEntries[0], logEntries[1], logEntries[2], logEntries[4] }; var expectedByCombined = new List <LogEntry> { logEntries[2] }; var expectedEmpty = new List <LogEntry>(); var expectedAll = logEntries; // Act var actualBySource = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { Sources = new List <string> { "the-source-2" } } ); var actualByCategory = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { Categories = new List <int> { LoggingEvents.ActionFilters.AsInt() } } ); var actualBySeverity = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { Severities = new List <LogEntrySeverities> { LogEntrySeverities.Debug } } ); var actualByStart = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { Start = hourAgo } ); var actualByEnd = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { End = hourAgo } ); var actualEmpty = await _loggingService.GetLogMessagesAsync( new LogMessagesFilterModel { Severities = new List <LogEntrySeverities> { LogEntrySeverities.Fatal } } ); var actualAll = await _loggingService.GetLogMessagesAsync(new LogMessagesFilterModel()); // Assert Assert.Equal( expectedBySource.OrderBy(e => e.Id), actualBySource.OrderBy(e => e.Id) ); Assert.Equal( expectedByCategory.OrderBy(e => e.Id), actualByCategory.OrderBy(e => e.Id) ); Assert.Equal( expectedBySeverity.OrderBy(e => e.Id), actualBySeverity.OrderBy(e => e.Id) ); Assert.Equal( expectedByStart.OrderBy(e => e.Id), actualByStart.OrderBy(e => e.Id) ); Assert.Equal( expectedByEnd.OrderBy(e => e.Id), actualByEnd.OrderBy(e => e.Id) ); Assert.Equal( expectedEmpty.OrderBy(e => e.Id), actualEmpty.OrderBy(e => e.Id) ); Assert.Equal( expectedAll.OrderBy(e => e.Id), actualAll.OrderBy(e => e.Id) ); }