Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Core 3.1的过滤Serilog输出_C#_.net Core_Entity Framework Core_Serilog - Fatal编程技术网

C# EF Core 3.1的过滤Serilog输出

C# EF Core 3.1的过滤Serilog输出,c#,.net-core,entity-framework-core,serilog,C#,.net Core,Entity Framework Core,Serilog,我在筛选asp.net core 3.1应用程序中serilog的输出时遇到问题 以下是appsettings.json中serilog配置的一部分: "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer", "Seri

我在筛选asp.net core 3.1应用程序中serilog的输出时遇到问题

以下是appsettings.json中serilog配置的一部分:

    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer", "Serilog.Filters.Expressions" ],
    "MinimumLevel": "Debug",
    "Enrich": [
      "FromLogContext"
    ],
    "WriteTo:SubloggerConsole": {
      "Name": "Console"
    },
    "WriteTo:SubloggerFile": {
      "Name": "Async",
      "Args": {
        "configure": [
          {
            "Name": "File",
            "Args": {
              "restrictedToMinimumLevel": "Information",
              "path": "%TEMP%/Logs/DbCommands.Log",
              "rollingIntervall": "Day",
              "retainedFileCountLimit": 2
            },
            "Filter": [
              {
                "Name": "DbLoggerCategory.Database.Command.Name"
              },
              {
                "Name": "ByIncludingOnly",
                "Args": {
                  "expression": "Contains(@Message, 'UPDATE') or Contains(@Message, 'INSERT')"
                }
              }
            ]
          }
        ]
      }
    }
program.cs的一部分

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => {
              webBuilder
              .UseStartup<Startup>()
              .CaptureStartupErrors(true)
              .UseSetting("detailedErrors", "true")
              .ConfigureAppConfiguration(config => {
                config.AddJsonFile("appsettings.Local.json", optional: true);
              });
            }).UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
              .ReadFrom.Configuration(hostingContext.Configuration)
            );
上下文文件的一部分

  public class FristentoolContext : DbContext {
    private readonly ILoggerFactory _loggerFactory;

    public FristentoolContext(DbContextOptions<FristentoolContext> options, ILoggerFactory loggerFactory)
        : base(options) {
      _loggerFactory = loggerFactory;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
      optionsBuilder.UseLoggerFactory(_loggerFactory);
    }

公共类FristentoolContext:DbContext{
私人只读iLogger工厂(loggerFactory);
公共FristentToolContext(DbContextOptions选项,iLogger工厂loggerFactory)
:基本(选项){
_loggerFactory=loggerFactory;
}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder){
选项Builder.UseLoggerFactory(_loggerFactory);
}
登录到该文件正在工作,但没有任何筛选器

我越想从互联网上获取信息,我就越感到头晕目眩。 似乎总是有10种方法来解决一个问题,所以任何帮助都是非常感谢的

提前谢谢
Matt

您好,我对serilog也有问题,您能稍微描述一下您想要实现的目标吗?什么过滤器?我尝试只过滤数据库插入和更新命令,正如您在appsettings.json中看到的那样
  public class FristentoolContext : DbContext {
    private readonly ILoggerFactory _loggerFactory;

    public FristentoolContext(DbContextOptions<FristentoolContext> options, ILoggerFactory loggerFactory)
        : base(options) {
      _loggerFactory = loggerFactory;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
      optionsBuilder.UseLoggerFactory(_loggerFactory);
    }