在Model页面中,Serilog不记录日志的解决方法是使用ILoggerFactory。
在程序启动的时候,在Startup.cs文件中添加以下代码,将Serilog与ILoggerFactory注入到应用程序中。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
loggerFactory.AddSerilog();
// rest of configuration code goes here
}
然后在Model文件中,注入ILogger接口并使用它记录日志,例如:
using Microsoft.Extensions.Logging;
public class TodoModel : PageModel
{
private readonly ILogger _logger;
public TodoModel(ILogger logger)
{
_logger = logger;
}
public void OnGet()
{
_logger.LogInformation("Todo page visited.");
}
}
这样就能够在Model页面中使用Serilog记录日志了。