ASP.NET Core 应用程序日志未写入 Azure 应用服务中的 Blob
Posted
技术标签:
【中文标题】ASP.NET Core 应用程序日志未写入 Azure 应用服务中的 Blob【英文标题】:ASP.NET Core Application Logs Not Written To Blob in Azure App Service 【发布时间】:2018-04-09 04:22:46 【问题描述】:我已为 Azure 上的应用服务启用应用程序日志记录到 blob。
我可以从 Azure 门户查看日志流中的日志 我可以看到在我创建的 Azure 存储帐户中每小时都会创建一个类似xxxxx-#####.applicationLog.csv
的文件,但该文件实际上并不包含我的应用程序日志
我尝试在同一个帐户上启用 Web 服务器日志记录到存储,这确实有效 - 我可以在不同的文件中看到 HTTP 请求的日志
我尝试创建一个新的存储帐户并将其指向日志,但没有任何改变
配置详情:
该应用使用 ASP.NET Core 2,在 .NET Framework 4.6.1 上运行 我通过.ConfigureLogging(log => log.AddAzureWebAppDiagnostics())
配置登录Program.cs
(在.NET Framework 而不是.NET Core 运行时运行时显然是必需的)
总结:当我在 Azure 门户中以这种方式配置 Azure 存储时,不会在 Azure 存储中创建包含我的应用程序日志的文件。
【问题讨论】:
见:docs.microsoft.com/en-us/azure/app-service/…。确保您已按照那里的所有步骤进行操作。特别注意您设置的日志记录级别。默认值为“信息”,因此如果您一直在记录“调试”,那么这些都不会真正被记录。 日志级别设置为详细。 您实际上是如何登录您的应用程序的? 使用 Microsoft.Extensions.Logging;即注入ILogger<Type>
您的应用是在 Azure 中运行还是在本地运行?
【参考方案1】:
如果我们想将应用程序日志写入 Azure blob 存储,首先我们需要在 Azure 门户上启用应用程序日志并为其配置 blob 存储。
我们可以关注blog 在 Asp.net 核心应用中设置日志记录。
在 ASP.NET Core 应用程序中设置日志记录不需要太多代码。 ASP.NET Core 新项目模板已经在 Startup.Configure 方法中使用此代码设置了一些基本的日志记录提供程序:
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
我也为它做演示。它在我这边工作正常。
1.在Sartup.cs文件中添加如下代码
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
loggerFactory.AddAzureWebAppDiagnostics(
new AzureAppServicesDiagnosticsSettings
OutputTemplate = "Timestamp:yyyy-MM-dd HH:mm:ss zzz [Level] RequestId-SourceContext: MessageNewLineException",
);
2.在 HomeController.cs 中添加如下代码
private readonly ILogger _logger;
public HomeController(ILoggerFactory loggerFactory)
_logger = loggerFactory.CreateLogger<HomeController>();
public IActionResult Index()
_logger.LogInformation("Log information");
_logger.LogError("Logger error");
return View();
3.访问主页/索引页面并从 Azure 存储 blob 中进行检查。日志 blob 名称的最后一部分。默认为“applicationLog.txt”。我们也可以自己设置。
【讨论】:
问题似乎是我在Program.cs
中调用 AddAzureWebAppDiagnostics() 而不是 Startup.cs
。不知道为什么这个项目不能在那个配置中工作,因为我有其他的 .Net Core 2 App Services 设置,但是哦,好吧。谢谢!
@Zout 可以将日志保存到 csv 而不是 txt 吗?换句话说,日志可以保存在块 blob 中而不是附加 blob 中吗?以上是关于ASP.NET Core 应用程序日志未写入 Azure 应用服务中的 Blob的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net Core 1 日志记录错误 - 找不到来自源应用程序的事件 ID xxxx 的描述
在 ASP.NET Core 2.2 中使用 InProcess 托管模型时,Serilog 不会将日志写入文件
C# ASP.NET Core Serilog 添加类名和方法到日志