将特定命名空间添加到 appsettings.json - Serilog ASP.NET Core 3.1
Add Specfic Namespace to appsettings.json - Serilog ASP.NET Core 3.1
我按照教程让您在 appsettings.json
中设置所有 Serilog
配置;但是,我无法让 WebAppLogger.Startup
输出任何消息:
{
"AllowedHosts": "*",
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Warning",
"WebAppLogger.Startup": "Verbose",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "Logs/log.txt",
"outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}"
}
},
{
"Name": "File",
"Args": {
"path": "Logs/log.json",
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
}
}
]
}
}
我尝试添加 "Using": [{"WebAppLogger.Startup": "Verbose"}]
但这会使应用程序崩溃。
我在 Serilog
文档中找不到任何与使用 appsettings.json
有关的内容。
此外,有没有办法完全抑制 Microsoft
和 System
消息?
在 appsettings.json
的 Using
字段中,您必须指定要使用的接收器。
例如,如果您要写入 Console
,您应该指定 class 的全名,包括名称空间(在本例中为 Serilog.Sinks.Console
),前提是当然,你安装了 NuGet package of the sink。
例如:
{
"Serilog": {
"Using": ["Serilog.Sinks.Console"], // <<<<<<<<<<##############
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "Console" }
],
"Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
}
}
您可以在 GitHub 存储库中查看示例:
- https://github.com/serilog/serilog-settings-configuration
- https://github.com/serilog/serilog-settings-configuration/tree/dev/sample/Sample
您可以使用 Filters (e.g. ByExcluding
, ByIncluding
). In the sample of the Serilog.Settings.Configuration repo 来抑制 Microsoft
和 System
消息,这里有一个如何通过 appsettings.json
.
配置它的示例
我按照教程让您在 appsettings.json
中设置所有 Serilog
配置;但是,我无法让 WebAppLogger.Startup
输出任何消息:
{
"AllowedHosts": "*",
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Warning",
"WebAppLogger.Startup": "Verbose",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "Logs/log.txt",
"outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}"
}
},
{
"Name": "File",
"Args": {
"path": "Logs/log.json",
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
}
}
]
}
}
我尝试添加 "Using": [{"WebAppLogger.Startup": "Verbose"}]
但这会使应用程序崩溃。
我在 Serilog
文档中找不到任何与使用 appsettings.json
有关的内容。
此外,有没有办法完全抑制 Microsoft
和 System
消息?
在 appsettings.json
的 Using
字段中,您必须指定要使用的接收器。
例如,如果您要写入 Console
,您应该指定 class 的全名,包括名称空间(在本例中为 Serilog.Sinks.Console
),前提是当然,你安装了 NuGet package of the sink。
例如:
{
"Serilog": {
"Using": ["Serilog.Sinks.Console"], // <<<<<<<<<<##############
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "Console" }
],
"Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
}
}
您可以在 GitHub 存储库中查看示例:
- https://github.com/serilog/serilog-settings-configuration
- https://github.com/serilog/serilog-settings-configuration/tree/dev/sample/Sample
您可以使用 Filters (e.g. ByExcluding
, ByIncluding
). In the sample of the Serilog.Settings.Configuration repo 来抑制 Microsoft
和 System
消息,这里有一个如何通过 appsettings.json
.