日志仅在本地有效,而在部署到Microsoft Azure App Service时则无效

时间:2018-07-10 09:33:15

标签: c# .net azure logging azure-web-sites

我在开发一个asp.net核心应用程序时遇到了一个奇怪的问题,该应用程序已部署到Microsoft Azure并作为应用程序服务在此运行。我的目标是完整的.net框架。 我正在使用Microsoft.Extensions.Logging,并且日志可以在本地正常工作,但是将其部署到Microsoft Azure时根本没有日志。 LogStream窗口保持空白,仅显示No new Trace in the last n minutes输出。

我已经检查过的东西:

  • 在“应用程序服务设置”中启用了诊断日志
  • 将LogLevel设置为详细
  • 检查了App-Service上的LogFiles目录

我的appsettings.json的一部分

"Logging": {
 "LogLevel": {
   "Default": "Information"
}

然后我将Logger实例注入到控制器中,如下所示:

ILogger<FooBarClassName> myLogger;

public FooBarClassName(ILogger<FooBarClassName> logger)
{
        myLogger = logger;
        ....
}

并像这样使用它:

void SomeMethod()
{
    ...
    myLogger.LogInformation("Some Log Message");
    ...
}    

感谢您为解决此问题提供的帮助。

1 个答案:

答案 0 :(得分:3)

您可以参考following steps来检查是否正确添加了ILogger。

第1步

转到Startup.cs,在Configure方法内,添加以下签名。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

ILoggerFactory默认是由asp.net内核注入到类中的。

Setp 2

设置提供商。

loggerFactory.AddDebug();
loggerFactory.AddAzureWebAppDiagnostics();

AddAzureWebAppDiagnostics来自package

Setp 3

我的HomeController和appsettings.json中的示例与您相同:

private readonly ILogger _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        void SomeMethod()
        {
            _logger.LogInformation("some log message.");
        }
        public IActionResult Index()
        {
            SomeMethod();
            return View();
        }

第4步

设置诊断日志以打开应用程序日志

enter image description here

第5步

查看日志流中的日志

enter image description here

有关更多详细信息,您可以参考此case和此article

相关问题