public class CustomEFLogger : ILogger
{
private string _CategoryName = null;
public CustomEFLogger(string categoryName)
{
this._CategoryName = categoryName;
}
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)
{
System.Diagnostics.Debug.WriteLine($"************************************************************");
System.Diagnostics.Debug.WriteLine($"CustomEFLogger {_CategoryName} {logLevel} {eventId} {state} start");
System.Diagnostics.Debug.WriteLine($"异常信息:{exception?.Message}");
System.Diagnostics.Debug.WriteLine($"信息:{formatter.Invoke(state, exception)}");
System.Diagnostics.Debug.WriteLine($"CustomEFLogger {_CategoryName} {logLevel} {eventId} {state} end");
System.Diagnostics.Debug.WriteLine($"************************************************************");
}
}
public class CustomEFLoggerFactory : ILoggerFactory
{
public void AddProvider(ILoggerProvider provider)
{
}
public ILogger CreateLogger(string categoryName)
{
return new CustomEFLogger(categoryName);
}
public void Dispose()
{
}
}
public partial class JDDbContext : DbContext
{
public JDDbContext(DbContextOptions<JDDbContext> options) : base(options)
{
Console.WriteLine("This is JDDbContext DbContextOptions");
}
private IConfiguration _IConfiguration = null;
private ILoggerFactory _iLoggerFactory = null;
public JDDbContext(IConfiguration configuration, ILoggerFactory loggerFactory)
{
this._IConfiguration = configuration;
this._iLoggerFactory = loggerFactory;
Console.WriteLine("This is JDDbContext configuration loggerFactory");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var configuration = builder.Build();
var conn = configuration.GetConnectionString("JDDbConnection");
optionsBuilder.UseSqlServer(conn);
optionsBuilder.UseLoggerFactory(new CustomEFLoggerFactory());
optionsBuilder.UseLoggerFactory(this._iLoggerFactory);
optionsBuilder.UseSqlServer(this._IConfiguration.GetConnectionString("JDDbConnection"));
optionsBuilder.UseSqlServer(StaticConstraint.JDDbConnection);
optionsBuilder.UseSqlServer("Server=.;Database=advanced11;User id=sa;password=Passw0rd");
}
}