有没有办法通过 appsettings.json 设置 Serilog 格式化程序变量?
Is there a way to set Serilog formatter variables via appsettings.json?
我有以下appsettings.json配置:
{
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName" ],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "C:\Logs\log.json",
"formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"
}
}
]
}
}
我试图在上述 appsettings.json 文件中配置的内容在 C# 中将表示为如下所示:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.WriteTo.File(new ElasticsearchJsonFormatter(inlineFields:true, renderMessageTemplate: false), @"C:\logs\log.json")
.CreateLogger();
我需要将 "inlineFields" 设置为 true 并将 "renderMessageTemplate" 设置为 false 作为我在 ElasticsearchJsonFormatter 实例上的 appsettings.json 文件中的覆盖。有没有办法在 appsettings.json 文件中执行此操作,以便我可以将我的配置保留在 C# 之外?
我在 GitHub 上问了这个问题:https://github.com/serilog/serilog-sinks-file/issues/138
没办法:(
他们在 Serilog.Settings.Configuration -v 3.3.0-dev-00291 中添加了此功能。
Serilog__WriteTo__Console__Name=Console
Serilog__WriteTo__Console__Args__formatter__type="Serilog.Templates.ExpressionTemplate, Serilog.Expressions"
Serilog__WriteTo__Console__Args__formatter__template="[{@t:HH:mm:ss} {@l:u3} {Coalesce(SourceContext, '<none>')}] {@m}\n{@x}"
[22:38:40 INF My.Foo.FooClient] HELLO WORLD
链接
我有以下appsettings.json配置:
{
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName" ],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "C:\Logs\log.json",
"formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"
}
}
]
}
}
我试图在上述 appsettings.json 文件中配置的内容在 C# 中将表示为如下所示:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.WriteTo.File(new ElasticsearchJsonFormatter(inlineFields:true, renderMessageTemplate: false), @"C:\logs\log.json")
.CreateLogger();
我需要将 "inlineFields" 设置为 true 并将 "renderMessageTemplate" 设置为 false 作为我在 ElasticsearchJsonFormatter 实例上的 appsettings.json 文件中的覆盖。有没有办法在 appsettings.json 文件中执行此操作,以便我可以将我的配置保留在 C# 之外?
我在 GitHub 上问了这个问题:https://github.com/serilog/serilog-sinks-file/issues/138
没办法:(
他们在 Serilog.Settings.Configuration -v 3.3.0-dev-00291 中添加了此功能。
Serilog__WriteTo__Console__Name=Console
Serilog__WriteTo__Console__Args__formatter__type="Serilog.Templates.ExpressionTemplate, Serilog.Expressions"
Serilog__WriteTo__Console__Args__formatter__template="[{@t:HH:mm:ss} {@l:u3} {Coalesce(SourceContext, '<none>')}] {@m}\n{@x}"
[22:38:40 INF My.Foo.FooClient] HELLO WORLD
链接