我正在尝试使用 Serilog 来满足我对 asp.net 核心 Web 应用程序的日志记录要求。我对这两个框架都是新手。我真的很想了解如何配置记录器,以便我可以同时将*单独的数据记录到文件和数据库接收器(比如在同一个控制器类中)。我尝试在互联网上进行研究,因为我阅读了 Serilog 有一个很好的文档,但我没有找到我需要的确切配置。
有人对此处与多个接收器相关的另一个 stackoverflow 问题提出建议。
我尝试执行以下操作:
public static void Main(string[] args)
{
var logger1 = new LoggerConfiguration()
.WriteTo.File("Logs\\system_.log", rollingInterval: RollingInterval.Day)
.CreateLogger();
var logger2 = new LoggerConfiguration()
.WriteTo.MSSqlServer(connectionString,
sinkOptions: new MSSqlServerSinkOptions { TableName = "logs" })
.CreateLogger();
logger1.Information("hello to file");
logger2.Information("hello to database");
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
这部分有效,我能够分别在日志文件和数据库(Sql server)中看到不同的日志,但现在我不知道如何在控制器类中使用这两种配置。
由于我的控制器类中的以下代码不会在任何接收器中记录任何内容
public class UserController : ControllerBase
{
private ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
_logger.LogInformation("Writing to log file with INFORMATION severity level.");
_logger.LogWarning("Writing to log file with WARNING severity level.");
_logger.LogError("Writing to log file with ERROR severity level.");
}
任何建议都会非常有帮助,在此先感谢。