Logging 日志记录在控制器内部不起作用-Serilog ASP.NET Core 3.1

Logging 日志记录在控制器内部不起作用-Serilog ASP.NET Core 3.1,logging,asp.net-core-webapi,serilog,Logging,Asp.net Core Webapi,Serilog,我有一个ASP.NETCore3.1WebAPI,我尝试使用Serilog,但由于某些原因,我在控制器内创建的任何日志都不会记录任何内容。当我从Startup类或通过像UseSerilogRequestLogging()这样的中间件进行日志记录时,日志记录工作正常 我的课程: public class Program { public static IConfiguration _configuration { get; } = new ConfigurationBuil

我有一个ASP.NETCore3.1WebAPI,我尝试使用Serilog,但由于某些原因,我在控制器内创建的任何日志都不会记录任何内容。当我从Startup类或通过像UseSerilogRequestLogging()这样的中间件进行日志记录时,日志记录工作正常

我的课程:

public class Program
    {
        public static IConfiguration _configuration { get; } = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appSettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development"}.json", optional: true)
        .AddEnvironmentVariables()
        .Build();

        public static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(_configuration)
                .Enrich.WithMachineName()
                .Enrich.FromLogContext()
                .WriteTo.Console()
                .CreateLogger();

            try
            {
                Log.Information("Application Starting.");
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "The Application failed to start.");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

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

有什么问题吗?

Program.cs
课程中,一切看起来都很好

Program.cs
中配置Serilog并使用它
Log.Information(“应用程序启动”)-因此它工作正常


您还可以在
作业控制器
日志信息(“消息”)中使用它

尝试LogError查看是否有效,只是为了给您一个查看方向的想法。我从
Program.cs
复制了您的配置,配置成功了。您确定您的控制器已被调用并且给定的操作已被触发吗?也许您的路由有问题,并且您看不到来自控制器的日志,因为控制器未被调用?字段可以是
ILogger
,您不需要使用通用声明。@hotel感谢您的评论,我同意您的意见-我更新了我的answear。
        private readonly IJobServiceRepository _jobServiceRepository;
        private readonly ILogger _logger;

        /// <summary>
        /// Constructor for this API controller
        /// </summary>
        public JobsController(IJobServiceRepository jobServiceRepository, ILogger<JobsController> logger)
        {
            _jobServiceRepository = jobServiceRepository ??
                throw new ArgumentNullException(nameof(jobServiceRepository));
            _logger = logger ??
                throw new ArgumentNullException(nameof(logger));
            _logger.LogInformation("TEST");
        }
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    }
  },
  "AllowedHosts": "*"
}