Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server 如何在ASP.NET Core中使用Serilog禁用自动日志记录_Sql Server_Asp.net Core_Serilog - Fatal编程技术网

Sql server 如何在ASP.NET Core中使用Serilog禁用自动日志记录

Sql server 如何在ASP.NET Core中使用Serilog禁用自动日志记录,sql-server,asp.net-core,serilog,Sql Server,Asp.net Core,Serilog,我知道是否有办法使用Serilog禁用自动日志记录 我安装了它和接收器,以使用MSSqlServer处理日志记录 appsettings.json: { "Serilog": { "Using": [ "Serilog.Sinks.MSSqlServer" ], "MinimumLevel": "Information", "WriteTo": [

我知道是否有办法使用
Serilog
禁用自动日志记录

我安装了它和
接收器
,以使用MSSqlServer处理日志记录

appsettings.json

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Server=tcp:{ServerAddress};Initial Catalog={DBName};Persist Security Info=False;User ID={Username};Password={Password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
          "sinkOptionsSection": {
            "tableName": "App_Logs",
            "autoCreateSqlTable": true
          }
        }
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  // ...other configs
}
这是我在
program.cs
中的配置:

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>webBuilder.UseStartup())
.useserlog((hostingContext,loggerConfiguration)=>
{
记录器配置
.ReadFrom.Configuration(hostingContext.Configuration);
});
Startup.cs
中(现在发表评论是因为我认为这是自动登录的原因,但也发表评论说它会自动在db上写入记录):

//启用Serilog的HTTP请求日志记录。
//重要提示:它不会记录管道中在它之前出现的任何内容,
//因此,请确保在*UseEndpoints()、UseMvc()和UseSpa()之前添加它*。
//app.useserlogrequestlogging();
有没有办法告诉Serilog只记录我处理过的日志?谢谢大家!

是的,有。您可以使用
MinimumLevel
配置属性控制哪些日志将进入接收器

MinimumLevel
配置属性可以设置为单个值,或者可以覆盖每个日志记录源的级别

单个值:

{
  "Serilog: {
    "MinimumLevel": "Debug"
  }
}
每个命名空间具有重写的对象:

{
  "Serilog":{
    "MinimumLevel":{
      "Default":"Information",
      "Override":{
        "YOUR.PROJECT.NAMESPACE":"Debug",
        "Microsoft":"Information",
        "Microsoft.AspNetCore":"Warning",
        "MongoDB.Driver":"Warning",
        "System":"Warning"
      }
    }
  }
}
用项目名称空间的名称替换
您的.PROJECT.NAMESPACE
,从现在起,只有来自上述名称空间的警告才会进入您的SQL Server接收器和项目中的调试级别日志

将接收器限制为最低级别日志 还可以将接收器(如SQL server)限制为最低级别的日志。对于
Args
restrictedToMinimumLevel
属性的使用:

{
  "Serilog":{
    "Using":[
      "Serilog.Sinks.MSSqlServer"
    ],
    "MinimumLevel":"Information",
    "WriteTo":[
      {
        "Name":"MSSqlServer",
        "Args":{
          "connectionString":"Server=tcp:{ServerAddress};Initial Catalog={DBName};Persist Security Info=False;User ID={Username};Password={Password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
          "sinkOptionsSection":{
            "tableName":"App_Logs",
            "autoCreateSqlTable":true,
            "restrictedToMinimumLevel":"Warning"
          }
        }
      }
    ]
  }
}
上述配置将把警告级别日志记录到SQL Server

最后一点注意,如果您切换到Serilog并且没有使用内置的ASP.NET核心日志记录,您可以安全地从
appsettings.json
文件中删除以前的
logging
部分。这些对Serilog日志记录没有影响:

  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
有没有办法告诉Serilog只记录我处理过的日志?谢谢大家!

是的,有。您可以使用
MinimumLevel
配置属性控制哪些日志将进入接收器

MinimumLevel
配置属性可以设置为单个值,或者可以覆盖每个日志记录源的级别

单个值:

{
  "Serilog: {
    "MinimumLevel": "Debug"
  }
}
每个命名空间具有重写的对象:

{
  "Serilog":{
    "MinimumLevel":{
      "Default":"Information",
      "Override":{
        "YOUR.PROJECT.NAMESPACE":"Debug",
        "Microsoft":"Information",
        "Microsoft.AspNetCore":"Warning",
        "MongoDB.Driver":"Warning",
        "System":"Warning"
      }
    }
  }
}
用项目名称空间的名称替换
您的.PROJECT.NAMESPACE
,从现在起,只有来自上述名称空间的警告才会进入您的SQL Server接收器和项目中的调试级别日志

将接收器限制为最低级别日志 还可以将接收器(如SQL server)限制为最低级别的日志。对于
Args
restrictedToMinimumLevel
属性的使用:

{
  "Serilog":{
    "Using":[
      "Serilog.Sinks.MSSqlServer"
    ],
    "MinimumLevel":"Information",
    "WriteTo":[
      {
        "Name":"MSSqlServer",
        "Args":{
          "connectionString":"Server=tcp:{ServerAddress};Initial Catalog={DBName};Persist Security Info=False;User ID={Username};Password={Password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
          "sinkOptionsSection":{
            "tableName":"App_Logs",
            "autoCreateSqlTable":true,
            "restrictedToMinimumLevel":"Warning"
          }
        }
      }
    ]
  }
}
上述配置将把警告级别日志记录到SQL Server

最后一点注意,如果您切换到Serilog并且没有使用内置的ASP.NET核心日志记录,您可以安全地从
appsettings.json
文件中删除以前的
logging
部分。这些对Serilog日志记录没有影响:

  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  }

它在
appsettings
“MinimumLevel”:{“Default”:“Information”,“Override”:{“Project.Namespace”:“Debug”,“Microsoft”:“Warning”,“Microsoft.AspNetCore”:“Warning”,“System”:“Warning”},
我在Microsoft属性上放置了警告而不是信息,因为否则它仍会继续写入一些记录。我在
appsettings
“MinimumLevel”:{“Default”:“Information”,“Override”:{“Project.Namespace”:“Debug”,“Microsoft”:“Warning”,“Microsoft.AspNetCore:“Warning”,“System:“Warning”},
我在Microsoft属性上放置了警告而不是信息,因为否则它仍在写入一些记录