【问题标题】:EF Core logging of sql commands [duplicate]sql命令的EF Core日志记录[重复]
【发布时间】:2019-01-13 10:22:00
【问题描述】:

我需要在 EF Core 中记录 sql 命令(选择、更新、删除、插入)。我有下一个认识:

public class CustomLoggerProvider : ILoggerProvider
{
    public ILogger CreateLogger(string categoryName)
    {
        if (string.Equals(categoryName, DbLoggerCategory.Database.Command.Name))
        {
            return new CustomLogger();
        }

        return NullLogger.Instance;
    }

    public void Dispose() { }

    private class CustomLogger : ILogger
    {
        public IDisposable BeginScope<TState>(TState state) => null;

        public bool IsEnabled(LogLevel logLevel) => true;

        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
        {
            var log = formatter(state, exception);
            AppLogger.Log(log);
        }
    }
}

...
dbcontext.GetService<ILoggerFactory>().AddProvider(new CustomLoggerProvider());

如果是 INSERT 命令,我会得到一组日志。其中一个是下一个:

"Executing DbCommand [Parameters=[@p0='?' (Size = 128), @p1='?' (DbType = DateTimeOffset), @p2='?' (Size = 128), @p3='?' (Size = 128), @p4='?' (Size = 128) (DbType = Binary), @p5='?' (DbType = DateTimeOffset), @p6='?' (DbType = DateTimeOffset)], CommandType='Text', CommandTimeout='30']\r\nSET NOCOUNT ON;\r\nINSERT INTO [someSchema].[SomeTable] ([ID], [Column1], [Column2], [Column3], [Column4], [Column5], [Column6])\r\nVALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6);"

如您所见,@p0='?'或 @p0 而不是参数值。有办法解决吗?

【问题讨论】:

    标签: database entity-framework


    【解决方案1】:

    您需要启用Sensitive Logging

    services.AddDbContextPool<MyDbContext>(builder =>
    {
        ....
        builder.EnableSensitiveDataLogging(true);
    });
    

    public class MyDbContext : DbContext
    {
    
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        { 
            optionsBuilder.EnableSensitiveDataLogging();
            base.OnConfiguring(optionsBuilder);
        }
    
    }
    

    Reference

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2012-05-30
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多