c# - 为什么我的 .NET Core 日志消息没有显示在 Azure 中?
问题描述
我尝试了各种尝试让日志记录在 Azure 中显示,但没有任何效果。我最近的尝试是这样的:
https ://ardalis.com/configuring-logging-in-azure-app-services/
我将此添加到我的项目中:
https ://www.nuget.org/packages/Microsoft.Extensions.Logging.AzureAppServices
在 Programs.cs 中,我这样做了:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
logging.AddAzureWebAppDiagnostics();
});
});
我在被调用的 API 控制器方法中有这一行:
_logger.LogWarning("Test warning logging.");
我也尝试过以这种方式记录:
Trace.TraceWarning("Test warning logging (trace).");
我的 Azure 应用服务日志设置如下所示:
然而,当我去日志流时,从来没有任何消息:
我不知道接下来要尝试什么。
解决方案
在您的 Programs.cs 中,ConfigureLogging(logging=>{xxx})
不应将 放在ConfigureWebHostDefaults
. 您应该在 Programs.cs 中使用以下代码:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging=> {
logging.ClearProviders();
logging.AddConsole();
logging.AddAzureWebAppDiagnostics();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
然后我使用这行代码发送日志:
_logger.LogInformation("this is an information from index page...");
然后在 azure 门户中,消息就在那里: