我已经创建了一个 ASP.NET Core 3.1 应用程序。应用程序部署到 Azure 应用服务。在项目中我使用了日志记录,但问题是我无法通过 Log Stream 查看 Azure 上的日志。
下面是我的配置方式:
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("The application has started");
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) => {
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
logging.AddAzureWebAppDiagnostics();
})
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
})
.Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "log.txt";
}))
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
这应该行得通吧?当我转到 Log Stream 时,我应该能够看到所有日志吗?如果是这样,为什么我看不到我创建的任何日志?
我不知道我的代码中发生了什么,我需要日志。
最佳答案
在 Azure 应用服务中,您的代码看起来不错,但只需确保您已启用应用程序日志记录。
请在此处找到更多相关信息 -
启用应用程序日志记录
- 将日志保存到文件系统。此设置将仅保持启用状态 12 小时
- 您还可以将日志保存到 Azure Blob 存储,即使您也将日志保存到文件系统
- 此外,您可以为要捕获的应用程序日志记录指定详细级别。这允许您将捕获的日志记录信息过滤为错误、警告、信息或详细。详细值将捕获您记录的所有信息
启用 Web 服务器日志记录
- 您可以将日志保存到文件系统或 Azure Blob 存储。
如果你保存到文件系统
- 您可以选择输入日志文件的最大大小(配额)
- 您可以选择输入网络服务器日志应保留的天数。 默认情况下,Web 服务器日志会无限期保留
启用详细错误消息
- 这些默认保存到文件系统
启用失败请求跟踪
- 这些也默认保存到文件系统
更多信息:请看这个doc reference.
关于Azure 服务日志流中未显示 ASP.NET Core 3.1 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63793874/