gpt4 book ai didi

entity-framework - 在 Entity Framework 核心中抑制 SQL 查询日志记录

转载 作者:行者123 更新时间:2023-12-03 12:07:44 25 4
gpt4 key购买 nike

我有一个使用 Entity Framework 核心的控制台 .net 核心应用程序。
该应用程序使用日志框架写入文件和控制台:

 serviceProvider = new ServiceCollection()
.AddLogging()
.AddDbContext<DataStoreContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")))
.BuildServiceProvider();

//configure console logging
serviceProvider.GetService<ILoggerFactory>()
.AddConsole(LogLevel.Debug)
.AddSerilog();

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.RollingFile(Path.Combine(Directory.GetCurrentDirectory(), "logs/vcibot-{Date}.txt"))
.WriteTo.RollingFile(Path.Combine(Directory.GetCurrentDirectory(), "logs/vcibot-errors-{Date}.txt"), LogEventLevel.Error)
.CreateLogger();

logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();

文件输出的最小级别设置为信息。但是使用此设置输出还包含 SQL 查询,示例如下:

2017-02-06 10:31:38.282 -08:00 [Information] Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT [f].[BuildIdentifier], [f].[Branch], [f].[BuildDate], [f].[StaticAssetSizeInKb] FROM [FileSizesHistoryEntries] AS [f]



有没有办法禁用 SQL 查询日志记录(仅在调试日志级别记录它们)

最佳答案

如果您使用内置记录器,您可以在 Program.cs 中为您的 ILoggingBuilder 添加过滤器。

所以,它看起来像:

WebHost.CreateDefaultBuilder(args)
// ...
.ConfigureLogging((context, logging) => {
var env = context.HostingEnvironment;
var config = context.Configuration.GetSection("Logging");
// ...
logging.AddConfiguration(config);
logging.AddConsole();
// ...
logging.AddFilter("Microsoft.EntityFrameworkCore.Database.Command", LogLevel.Warning);
})
// ...
.UseStartup<Startup>()
.Build();

关于entity-framework - 在 Entity Framework 核心中抑制 SQL 查询日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com