Logging 日志记录在控制器内部不起作用-Serilog ASP.NET Core 3.1
我有一个ASP.NETCore3.1WebAPI,我尝试使用Serilog,但由于某些原因,我在控制器内创建的任何日志都不会记录任何内容。当我从Startup类或通过像UseSerilogRequestLogging()这样的中间件进行日志记录时,日志记录工作正常 我的课程: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
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": "*"
}