我遵循了一个教程,让你在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
,则应指定类的全名,包括命名空间(在本例中为Serilog.Sinks.Console
(,当然,前提是安装了接收器的 NuGet 包。
例如:
{
"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
System
Microsoft
您可以使用过滤器(例如ByExcluding
,ByIncluding
(。在Serilog.Settings.Configuration repo的示例中,有一个如何通过appsettings.json
配置它的示例。