Почему я не могу заставить Serilog вести журнал на диск или в App Insights?

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

Вот мой код: В Program.cs приложения Asp.Net Core Console:

      Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
var logger = host.Services.GetRequiredService<ILogger<Program>>();

...

      try
            {
                logger.LogInformation("Starting web host");
                host.Run();

                return 0;
            }
            catch (Exception e)
            {
                logger.LogCritical(e, "Web host terminated unexpectedly");
                return 1;
            }
            finally
            {
                logger.LogInformation("Host was shut down");
            }

...

      public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .UseSerilog((hostingContext, services, loggerConfig) =>
                {
                    loggerConfig.SetLoggerConfiguration(hostingContext.Configuration, services);
                });

...

      using System;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
using Serilog.Events;

namespace Infrastructure.Helpers
{

    public static class LoggerHelper
    {
        
         public static LoggerConfiguration SetLoggerConfiguration(this LoggerConfiguration 
              loggerConfiguration, IConfiguration configuration, IServiceProvider services)
        {
            return loggerConfiguration
                .SetMinimumLevel()
                .EnrichLogger()
                .WriteToSinks(configuration, services);
        }
    }

    public static class LoggerConfigurationExtensions
    {
        public static LoggerConfiguration SetMinimumLevel(this LoggerConfiguration loggerConfiguration)
        {
            return loggerConfiguration.MinimumLevel.Debug()
                .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning);
        }

        public static LoggerConfiguration EnrichLogger(this LoggerConfiguration loggerConfiguration)
        {
            return loggerConfiguration.Enrich.FromLogContext()
                .Enrich.WithMachineName()
                .Enrich.WithEnvironmentUserName()
                .Enrich.WithProcessName()
                .Enrich.WithProcessId();
        }

        public static LoggerConfiguration WriteToSinks(this LoggerConfiguration loggerConfiguration, IConfiguration configuration, IServiceProvider services)
        {
            loggerConfiguration.WriteTo.Console();

            loggerConfiguration.WriteTo
                .ApplicationInsights(services.GetRequiredService<TelemetryConfiguration>(),
                    TelemetryConverter.Traces);

            loggerConfiguration.WriteToFile(configuration);

            return loggerConfiguration;
        }

        public static LoggerConfiguration WriteToFile(this LoggerConfiguration loggerConfiguration, IConfiguration configuration)
        {
            var baseFileName = configuration["Logger:BaseFileName"];

            loggerConfiguration.WriteTo.File($"log-files/{baseFileName}.log",
                outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
                rollingInterval: RollingInterval.Day,
                rollOnFileSizeLimit: true,
                retainedFileCountLimit: null,
                shared: true);

            return loggerConfiguration;
        }
    }
}

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

0 ответов

Другие вопросы по тегам