Где в Azure Portal находятся операторы logger.Log? - PullRequest
3 голосов
/ 18 февраля 2020

У меня есть. NET Базовое приложение WebAPI. Приложение развернуто в Azure как служба приложений.

В коде я включил Application Insights следующим образом:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost
    .CreateDefaultBuilder(args)
    .UseApplicationInsights()
    .UseStartup<Startup>()
    .ConfigureLogging((hostingContext, logging) =>
    {                      
        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")).SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Error);  
        logging.AddApplicationInsights(" xxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxx").SetMinimumLevel(LogLevel.Trace);
    })
    .Build();

В конструкторе контроллера и внутри метода контроллера у меня есть эти операторы регистрации.

_logger.LogInformation("ApiController, information");
_logger.LogWarning("ApiController, warning");
_logger.LogCritical("ApiController, critical");
_logger.LogWarning("ApiController, error");
_logger.LogDebug("ApiController, debug");

На портале Azure у меня включена функция Application Insights для моей службы приложений. Вот изображение с портала.

Информация о приложении в Azure Portal

Но где я могу увидеть операторы ведения журнала на портале Azure?

Когда я go до Application Insights -> Logs и я запрашиваю по

search *

, я вижу запросы, сделанные к API, но не операторы журналирования.

Приложение Insights Log

Где находятся записи журнала?

1 Ответ

1 голос
/ 19 февраля 2020

Во-первых, не рекомендуется настраивать уровень журнала в коде. Вы можете легко настроить уровень журнала в файле appsettings.json. Поэтому в методе Program.cs -> public static IWebHost BuildWebHost измените код на следующий:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights()
                .UseStartup<Startup>()
                .Build();

Затем в appsettings.json (также щелкните правой кнопкой мыши файл -> свойства -> установите «копировать в выходной каталог» «Копировать, если новее»):

{
  "Logging": {
    "IncludeScopes": false,
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Trace"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "ApplicationInsights": {
    "InstrumentationKey": "the key"
  }
}

В контроллере, например ValuesController:

    public class ValuesController : Controller
    {
        private readonly ILogger _logger;
        public ValuesController(ILoggerFactory loggerFactory)
        {
            _logger = loggerFactory.CreateLogger<ValuesController>();
        }

        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            _logger.LogInformation("ApiController, information");
            _logger.LogWarning("ApiController, warning");
            _logger.LogCritical("ApiController, critical");
            _logger.LogWarning("ApiController, error");
            _logger.LogDebug("ApiController, debug");

            return new string[] { "value1", "value2" };
        }
     }

Запустите проект и подождите несколько минут (понимание приложения всегда будет занимать От 3 до 5 минут или более для отображения данных). Затем перейдите к azure portal -> журналам анализа приложений, помните, что все журналы, записанные ILogger, хранятся в таблице «traces». Просто напишите запрос наподобие «трассировки» и укажите правильный временной диапазон, вы должны увидеть все журналы, как показано ниже:

enter image description here

...