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属性上放置了警告而不是信息,因为否则它仍在写入一些记录