Я работаю над основным приложением DotNET и пытаюсь внедрить Nlogs в службу приложений Azure. Работая на локальном компьютере / Visual Studio, я успешно могу создавать Nlogs. Однако, когда я публикую приложение для развертывания в облаке Azure, нлоги не создаются в указанном месте.

Это конфигурация, которую я сделал для публикации Nlog: - Конфигурация выпуска

После развертывания приложения в облачной службе приложений конфигурация выглядит так: - Настройки приложения

Я не получаю никаких сообщений об ошибках, и приложение работает нормально, хотя я не вижу никаких журналов, созданных в службе приложений.

0
Bharat Kwatra 15 Сен 2021 в 10:37

2 ответа

Лучший ответ
  • В Visual Studio создайте основное приложение .Net. Установите пакет Nuget. Microsoft.Extensions.Logging.AzureAppServices, и Microsoft.Extensions.Logging.Console, версия 3.1.2 для вашего проекта.

  • В Startup.cs, метод ConfigureServices добавьте следующий код:

     public void ConfigureServices(IServiceCollection services)
        {
            //other code
    
            //add the following code
            services.AddLogging(loggingBuilder =>
            {
                loggingBuilder.AddConsole();
                loggingBuilder.AddDebug();
                loggingBuilder.AddAzureWebAppDiagnostics();
            });
        }
    

Добавьте класс New Controller и следующий код:

 private readonly ILogger<HomeController> _logger;
    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }
    public IActionResult Index()
    {
        _logger.LogInformation("**********first: hello, this is a test message!!!");
        _logger.LogInformation("**********second: hello, this is a test message!!!");
        return View();
    }
  • Опубликуйте приложение в Azure.
  • На портале Azure перейдите в раздел -> Журналы службы приложений и выполните следующие настройки. введите описание изображения здесь
  • Перейдите к «Поток журналов» на портале Azure, затем посетите веб-сайт, вы увидите журналы: введите описание изображения здесь
0
HarshithaVeeramalla-MT 15 Сен 2021 в 10:30

Вы можете активировать поток журнала из журнала- files, поэтому он будет отслеживать любые файлы, заканчивающиеся на .txt или .log, которые хранятся в HOME-папке. Затем вы можете использовать File-target:

<?xml version="1.0" encoding="utf-8"?>
<nlog>
   <targets async="true">
      <target name="logfile" xsi:type="File" filename="${environment:HOME:cached=true}/logfiles/application/app-${shortdate}-${processid}.txt" />
   </targets>
   <rules>
      <logger name="*" minlevel="Info" writeTo="logfile" />
   </rules>
</nlog>

См. Также: https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-cloud-logging-with-Azure-function-or-AWS-lambda#writing -to-azure-Diagnostics-log-stream

0
Rolf Kristensen 16 Сен 2021 в 20:55