@Dudder

Из за чего может не выводить в консоль dbug?

У меня есть контроллер ProductsController:
using Microsoft.AspNetCore.Mvc;
using WebApp.Models;

namespace WebApp.Controllers
{
    [Route("api/[controller]")]
    public class ProductsController : ControllerBase
    {
        private DataContext context;
        public ProductsController(DataContext ctx)
        {
            context = ctx;
        }
        [HttpGet]
        public IEnumerable<Product> GetProducts()
        {
            return context.Products;
        }

        [HttpGet("{id}")]
        public Product? GetProduct([FromServices]
 ILogger<ProductsController> logger)
        {
            logger.LogDebug("GetProduct Action Invoked");
            return context.Products.FirstOrDefault();
        }
    }
}

Есть класс Program:
using Microsoft.EntityFrameworkCore;
using WebApp.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<DataContext>(opts =>
{
    opts.UseSqlServer(builder.Configuration["ConnectionStrings:ProductConnection"]);
    opts.EnableSensitiveDataLogging(true);
});

builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();

app.MapGet("/", () => "Hello World!");

var context = app.Services.CreateScope().ServiceProvider.GetRequiredService<DataContext>();
SeedData.SeedDatabase(context);

app.Run();

И настройки appsettings.json:
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.EntityFrameworkCore": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "ProductConnection": "Server=(localdb)\\MSSQLLocalDB;Database=Products;MultipleActiveResultSets=True"
  }
}

При обработке запроса localhost:5000/api/products/1, и в консоли должно появиться dbug: WebApp.Controllers.ProductsController[0]
GetProduct Action Invoked
по факту контроллер отрабатывает без ошибок, но в консоли нету такого сообщения
UPD
[HttpGet("{id}")]
        public Product? GetProduct(long id, [FromServices]ILogger<ProductsController> logger)
        {
            logger.LogDebug("GetProduct Action Invoked");
            return context.Products.Find(id);
        }

Часть кода которая отвечает за вывод сообщения в консоль
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Из за чего может не выводить в консоль dbug?

Из-за того что у тебя явно в конфиге указаны минимальные уровни логирования (в твоём случае отрабатывает строчка Default: Information):
"Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.EntityFrameworkCore": "Information"
    }
  }

Уровни логирования такие, от самого высокого к самому низкому:
  • None = 6
  • Critical = 5
  • Error = 4
  • Warning = 3
  • Information = 2
  • Debug = 1
  • Trace = 0

Как видишь, Information и Warning идут выше, чем Debug.
Чтобы сообщение залогировалось - его уровень должен быть выше или равен минимальному уровню.

https://learn.microsoft.com/ru-ru/dotnet/api/micro...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы