1
resposta

Código do SqlLoggerProvider não aparece nada no console

Código do SqlLoggerProvider não aparece nada no console, digitei os mesmo códigos. Porém não me retorna os SQLs no console.

1 resposta

Olá, Luiz

Como está seu código? Pode comparar com este aqui, por favor?

using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Logging;
using System;

namespace Alura.Loja.Testes.ConsoleApp
{
    public class SqlLoggerProvider : ILoggerProvider
    {
        public static ILoggerProvider Create()
        {
            return new SqlLoggerProvider();
        }

        public ILogger CreateLogger(string categoryName)
        {
            if (categoryName == typeof(IRelationalCommandBuilderFactory).Fullname)
            {
                return new SqlLogger();
            }
            return new NullLogger();
        }

        public void Dispose(){

        }
        internal class NullLogger : ILogger
        {
            public IDisposable BeginScope<TState>(TState state)
            {
                return null;
            }

            public bool IsEnabled(LogLevel logLevel)
            {
                return true;
            }

            public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception)
            {
                //não faz nada, caso esteja faltando algum parametro, você pode usar o auto complete do Visual Studio para montar esse método melhor.
            }
        }

        public class SqlLogger : ILogger
        {
            public IDisposable BeginScope<TState>(TState state)
            {
                return null;
            }

            public bool IsEnabled(LogLevel logLevel)
            {
                return true;
            }

            public void Log<TState>(LogLevel logLevel,EventId eventId, TState state, Exception e)
            {
                Console.WriteLine("");
                Console.WriteLine(formatter(state,exception));
                Console.WriteLine("");
            }
        }
    }
}