O comando sql não aparece no console. Já tentei com o código fornecido na aula: 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, Func<TState, Exception, string> formatter)
{
//não faz nada
}
}
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 exception, Func<TState, Exception, string> formatter)
{
Console.WriteLine("");
Console.WriteLine(formatter(state, exception));
Console.WriteLine("");
}
}
}
Já tentei com o código fornecido em fórum: 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("");
}
}
}
}
Com esse código fornecido no fórum ainda da alguns erros. De nada adianta o do fórum estar alterado sendo que apresenta erros.