c# - EF Core EnableSensitiveDataLogging 无法按预期工作
问题描述
我正在使用 MySql 使用 EF Core 2.1.1,并且我有以下代码来启用转换为 SQL 查询的 ef 核心的日志记录
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.EnableSensitiveDataLogging();
}
我在日志中没有看到任何内容,我也不知道为什么。
解决方案
将 EF Core 2.2 与 Visual Studio 2019 和 SQL Server 结合使用,我能够使用以下配置使EnableSensitiveDataLogging选项正常工作。
在您的 Startup.cs 类中,
将日志服务添加到您的 ConfigureServices 方法。我正在过滤记录到数据库命令和信息记录级别,
services.AddLogging(loggingBuilder => {
loggingBuilder.AddConsole()
.AddFilter(DbLoggerCategory.Database.Command.Name, LogLevel.Information);
loggingBuilder.AddDebug();
});
现在更新您的 DBContext 以启用敏感数据记录,
services.AddDbContext<MyDbContext>(options => {
options.UseSqlServer(_configuration.GetConnectionString("MyDbConnection"));
options.EnableSensitiveDataLogging(true);
});
配置启动后,您现在将看到 SQL 命令及其敏感数据出现在 Visual Studio 的输出窗口(调试...Windows...输出)中,如下所示,
Microsoft.EntityFrameworkCore.Database.Command:Information: Executed DbCommand (3ms)
[Parameters=[@p1='aaa' (Nullable = false) (Size = 450),
@p2='bbb' (Size = 4000),
@p0='New Column Value' (Size = 4000)],
CommandType='Text', CommandTimeout='30']
SET NOCOUNT ON;
UPDATE [MyTableName] SET [MyColumnName] = @p0
WHERE [Id] = @p1 AND [OtherColumn] = @p2;
SELECT @@ROWCOUNT;
我也花了一段时间才弄清楚这一点。我也无法使用 DBContext 类中的 OnConfiguring 让敏感数据出现在日志中。
希望这会有所帮助,即使它使用的是 SQL Server 而不是 MySQL。
笔记! 部署到生产环境时,请务必禁用敏感数据日志记录。
推荐阅读
- typescript - 如果不存在,则将日期插入数组 - 打字稿
- tinymce - 如何更新 tinymce 编辑器的 color_map
- excel - 如果在onedrive或本地,请检查文件夹路径
- python - Plotly 水平条形图中的文本被截断
- python - 确定我的哪个 for 迭代的误差最小
- java - Spring boot JPA相关实体说明
- r - 在R中的for循环中为每个索引组合函数的输出
- github-actions - Github Action 是否支持按需自托管运行器?
- python - 如何强制第二级多索引的值?
- c# - Unity - 暂停/恢复按钮会触发我的跳跃动画 - 如何解决?