我在.net5中有一个Azure函数(也称为dotnet-isolated),我添加了这样的实体框架
services.AddDbContext<EfDbContext>(options =>
{
options.UseSqlServer(context.Configuration[...], builder =>
{
builder.EnableRetryOnFailure();
});
});当我运行该函数时,我在控制台中看到来自EF的DB查询(根据颜色判断信息级别)。

如何禁用它们?我在我的host.json中尝试了显而易见的选项
"logging": {
"logLevel": {
"Microsoft.EntityFrameworkCore": "Warning",
}
}和
"logging": {
"logLevel": {
"default": "Information",
"Microsoft.EntityFrameworkCore": "Warning",
"Microsoft.EntityFrameworkCore.Database": "Warning",
"Microsoft.EntityFrameworkCore.Query": "Warning"
}
}甚至是
"logging": {
"logLevel": {
"Microsoft": "Warning",
}
}但这并不管用。唯一有效的选择是
"logging": {
"logLevel": {
"default": "Warning",
}
}我是不是遗漏了什么?
发布于 2021-05-17 14:45:07
找到了一种方法。虽然这有点奇怪,但我仍然想知道它是如何工作的,以及为什么它是这样做的。无论如何,从AppInsights日志中我发现EF日志是在Function.<YOUR_FUNCTION_NAME>.User category下编写的。(原来标准EF类别以某种方式被functions运行时覆盖了?)
这意味着我可以通过以下方式影响特定函数的总体日志级别
"logging": {
"logLevel": {
"Function.MyFunc1.User": "Debug",
"Function.MyFunc2.User": "Warning"
}
}在host.json中。它可能会有帮助,但它不能解决我的问题。
但是,如果我现在在Program.cs中添加一个过滤器,如下所示:
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
...
.ConfigureLogging(builder =>
{
builder.AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning);
})
...EF信息日志不见了。
发布于 2021-10-07 16:11:17
这对我很有效:
builder.AddFilter("Microsoft.EntityFrameworkCore", LogLevel.None);https://stackoverflow.com/questions/67516951
复制相似问题