在 Azure 函数中禁用 Entity Framework 日志记录
Disable Entity Framework logging in Azure Function
我在 .net5 中有一个 Azure 函数 (a.k.a。dotnet-isolated
) 并且我添加了 Entity Framework 这样的
services.AddDbContext<EfDbContext>(options =>
{
options.UseSqlServer(context.Configuration[...], builder =>
{
builder.EnableRetryOnFailure();
});
});
当我 运行 函数时,我在控制台中看到来自 EF 的数据库查询(信息级别根据颜色判断)。
如何禁用它们?我在 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",
}
}
我是不是漏掉了什么?
找到方法了。虽然这有点奇怪,但我仍然想了解它是如何工作的以及为什么这样做。无论如何,从 AppInsights 日志中我发现 EF 日志写在 Function.<YOUR_FUNCTION_NAME>.User
category 下。 (事实证明标准 EF 类别以某种方式被函数运行时覆盖?)。
这意味着我可以通过
影响特定功能的整体日志级别
"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 信息日志不见了。
这对我有用:
builder.AddFilter("Microsoft.EntityFrameworkCore", LogLevel.None);
我在 .net5 中有一个 Azure 函数 (a.k.a。dotnet-isolated
) 并且我添加了 Entity Framework 这样的
services.AddDbContext<EfDbContext>(options =>
{
options.UseSqlServer(context.Configuration[...], builder =>
{
builder.EnableRetryOnFailure();
});
});
当我 运行 函数时,我在控制台中看到来自 EF 的数据库查询(信息级别根据颜色判断)。
如何禁用它们?我在 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",
}
}
我是不是漏掉了什么?
找到方法了。虽然这有点奇怪,但我仍然想了解它是如何工作的以及为什么这样做。无论如何,从 AppInsights 日志中我发现 EF 日志写在 Function.<YOUR_FUNCTION_NAME>.User
category 下。 (事实证明标准 EF 类别以某种方式被函数运行时覆盖?)。
这意味着我可以通过
影响特定功能的整体日志级别 "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 信息日志不见了。
这对我有用:
builder.AddFilter("Microsoft.EntityFrameworkCore", LogLevel.None);