我创建了一个自定义的 JSON Formatter,它扩展了 ITextFormatter 并尝试将其添加到 appsetting.json 中,如下所示:
"WriteTo": [
{
"Name": "Console",
"Args": {
"formatter": "CustomizedJSONFormatter"
// "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
}
}
]
默认的 jsonFormatter 工作正常,如注释行所示。 但是如果我想添加自定义的,我会得到一个错误: InvalidCastException:从“System.String”到“Serilog.Formatting.ITextFormatter”的转换无效。
有办法解决这个问题吗?
谢谢!
根据@SLaks的建议,需要程序集限定的类型名称:
MyNamespace.CustomizedJsonFormatter, MyAssembly
需要像下面这样使用:
"WriteTo": [
{
"Name": "Console",
"Args": {
"customFormatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter,Serilog.Formatting.Elasticsearch"
}
}
]
如果它对其他人有帮助:就我而言,缺少以下 Nuget 包,安装后,错误消失了:
Serilog.Formatting.Elasticsearch
正如 @Rodrigo Leite 建议的那样,您确实需要引用 Nuget 包
Serilog.Formatting.Elasticsearch
但还需要更改appsettings文件中格式化程序的路径:
"formatter":
"Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"
但是这个方法似乎不适用于下面
"WriteTo": [
{
"Name": "File",
"Args": {
"customFormatter": "Elastic.CommonSchema.Serilog.EcsTextFormatter,Elastic.CommonSchema.Serilog",
}
}
]