gpt4 book ai didi

c# - ASP.NET Core 3.1,仅将特定消息记录到 Azure Log Stream Console

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

我有一个在 Microsoft Azure 应用服务上运行的 ASP.NET Core 3.1 API。

我在应用程序中设置了一个 ILogger,并广泛使用它来监视 API 的行为。我希望能够在应用程序门户的 Azure 日志流中实时查看这些消息。

AzureWebAppDiagnostics 注册到 Program.cs 后,我设法获取日志,如下所示:

 public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
logging.AddAzureWebAppDiagnostics();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}

问题是我使用

显式记录的消息
logger.LogInformation("whatever message") 

与系统消息混合并被淹没: Entity Framework 命令、Microsoft.Hosting.Lifetime 消息和多个其他信息性消息。

如何设置系统,使我仅从系统获取错误/警告消息,并从我的应用程序代码获取信息性消息。

我尝试按如下方式更改appsettings.json,但似乎根本没有效果:

"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"Microsoft.Hosting.Lifetime": "Error",
"Microsoft.*": "Error",
"System": "Error",
"Microsoft.EntityFrameworkCore.*": "Warning"
}
}

为了以防万一,我还删除了 appsettings.development.json 文件,如建议的 here .

我做错了什么?

最佳答案

其实经过研究,给出了解决方案here

您需要将 AzureAppServicesBlob 和 AzureAppServicesFile 配置添加到您的配置文件中,它们似乎是 Azure 日志流考虑的配置。

所以我添加了以下部分:

"AzureAppServicesBlob": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"System": "Error"
}
},
"AzureAppServicesFile": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"System": "Error"
}
}

关于c# - ASP.NET Core 3.1,仅将特定消息记录到 Azure Log Stream Console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420381/

25 4 0