using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.ViewModels.LogViewer; using Umbraco.Cms.Core.Logging; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Services; namespace Umbraco.Cms.Api.Management.Controllers.LogViewer; public class AllSinkLevelLogViewerController : LogViewerControllerBase { private readonly ILogViewerService _logViewerService; private readonly IUmbracoMapper _umbracoMapper; public AllSinkLevelLogViewerController(ILogViewerService logViewerService, IUmbracoMapper umbracoMapper) { _logViewerService = logViewerService; _umbracoMapper = umbracoMapper; } /// /// Gets a paginated list of all loggers' levels. /// /// The amount of items to skip. /// The amount of items to take. /// The paged result of the configured loggers and their level. [HttpGet("level")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> AllLogLevels(int skip = 0, int take = 100) { KeyValuePair[] logLevels = _logViewerService .GetLogLevelsFromSinks() .ToArray(); var viewModel = new PagedViewModel { Total = logLevels.Length, Items = _umbracoMapper.MapEnumerable, LoggerResponseModel>(logLevels.Skip(skip).Take(take)) }; return await Task.FromResult(Ok(viewModel)); } }