Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I cannot see logs in Azure Log Stream

I am trying to log information of my ASP.NET Core App and I cannot find a way to display the loogs in Azure Log Stream. The application successfully logs when I debug in Visual Studio but I do not see anything when I publish to Azure.

This is how my App Service Logs looks like: App Service Logs

I have tried to log using different methods that I have found in Microsoft documentation and none has worked.

    [HttpGet]
    public string Index()
    {
        Trace.TraceInformation("You are in the face recognition controller. Trace");
        _logger.LogInformation("You are in the face recognition controller. Logger");
        return "You are in the face recognition controller";
    }

Controller constructor:

    private readonly ILogger _logger;
    public FaceRecognitionController(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<FaceRecognitionController>();
    }

Configure method:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        loggerFactory.CreateLogger("console");
        loggerFactory.CreateLogger("debug");

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }

Does anyone know what I can do?

Log Stream screenshot: enter image description here

like image 814
Alvaro Albero Avatar asked Mar 19 '20 00:03

Alvaro Albero


1 Answers

For .NET core 3.1, please follow the steps below:

1.Install nuget packagae Microsoft.Extensions.Logging.AzureAppServices, Version 3.1.2 and Microsoft.Extensions.Logging.Console, version 3.1.2 for your project.

2.In Startup.cs -> ConfigureServices method, add the following code:

    public void ConfigureServices(IServiceCollection services)
    {
        //other code

        //add the following code
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.AddConsole();
            loggingBuilder.AddDebug();
            loggingBuilder.AddAzureWebAppDiagnostics();
        });
    }

then in the controller class, code looks like below:

    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();
    }

3.Publish it to azure, and then configure "App Service Logs" as mentioned in your post.

4.Nav to "Log stream" in azure portal, then visit the web site, you can see the logs:

enter image description here

Note: You should always use ILogger in asp.net core for logging, Trace.TraceInformation may not work for it.

like image 190
Ivan Yang Avatar answered Oct 30 '22 06:10

Ivan Yang