0

我正在尝试使用 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.");
        
    }

任何建议都会非常有帮助,在此先感谢。

4

0 回答 0