using NzbDrone.Core.Datastore; using NzbDrone.Core.Instrumentation; using NzbDrone.Api.Mapping; namespace NzbDrone.Api.Logs { public class LogModule : NzbDroneRestModule { private readonly ILogService _logService; public LogModule(ILogService logService) { _logService = logService; GetResourcePaged = GetLogs; } private PagingResource GetLogs(PagingResource pagingResource) { var pageSpec = pagingResource.InjectTo>(); if (pageSpec.SortKey == "time") { pageSpec.SortKey = "id"; } if (pagingResource.FilterKey == "level") { switch (pagingResource.FilterValue) { case "Fatal": pageSpec.FilterExpression = h => h.Level == "Fatal"; break; case "Error": pageSpec.FilterExpression = h => h.Level == "Fatal" || h.Level == "Error"; break; case "Warn": pageSpec.FilterExpression = h => h.Level == "Fatal" || h.Level == "Error" || h.Level == "Warn"; break; case "Info": pageSpec.FilterExpression = h => h.Level == "Fatal" || h.Level == "Error" || h.Level == "Warn" || h.Level == "Info"; break; case "Debug": pageSpec.FilterExpression = h => h.Level == "Fatal" || h.Level == "Error" || h.Level == "Warn" || h.Level == "Info" || h.Level == "Debug"; break; case "Trace": pageSpec.FilterExpression = h => h.Level == "Fatal" || h.Level == "Error" || h.Level == "Warn" || h.Level == "Info" || h.Level == "Debug" || h.Level == "Trace"; break; } } return ApplyToPage(_logService.Paged, pageSpec); } } }