C# Serilog-在FileLink的JSON字符串之前包含自定义信息
我有一个记录日志需要遵循的格式。我正在写一封信给文件链接C# Serilog-在FileLink的JSON字符串之前包含自定义信息,c#,logging,serilog,C#,Logging,Serilog,我有一个记录日志需要遵循的格式。我正在写一封信给文件链接 Serilog.Log.Logger = new LoggerConfiguration() .WriteTo.Sink(new FileSink(ConfigurationManager.AppSettings["serilogPath"],new JsonFormatter(), null)) .CreateLogger(); 这将生成一个每行JSON对象,看起来像(我
Serilog.Log.Logger = new LoggerConfiguration()
.WriteTo.Sink(new FileSink(ConfigurationManager.AppSettings["serilogPath"],new JsonFormatter(), null))
.CreateLogger();
这将生成一个每行JSON对象,看起来像(我格式化了它,它实际上是日志文件中的一行):
在我当前的配置中,JSON对象显示了对象的正确序列化形式,但我需要时间戳、[信息]字段(也可能是错误/警告),以及将“Properties”键重命名为“MyCustomKeyName”的能力
时间戳和[Information]信息是我在使用WriteTo.File时默认获得的信息,但我的目标是通过使用带有json格式化程序的FileLink获得它。通过FileLink,我得到了一个完整的JSON对象,其中的字段封装为key/val对。我希望在JSON对象之前有时间戳和级别信息。目标是让logstash解析它
谢谢。实现您自己的
Serilog.Formatting.ITextFormatter
是一种方法;对于JSON部分,直接或通过复制代码重用SerilogJsonFormatter
应该相当简单
当你实现了格式化程序后,你可以通过
WriteTo.File()
来代替内置的JsonFormatter
当涉及到C时,我完全是个废物。我刚刚从你的评论中意识到,我可以复制并粘贴你的JsonFormatter,删除那些条目,并在要编写的JSON字符串后面添加文本!非常感谢,我真的很喜欢你这么好地支持这个计划!很好,很高兴听到:-)
{
"Timestamp": "2016-05-29T02:49:33.2153863+08:00",
"Level": "Error",
"MessageTemplate": "my template",
"Properties": {
<MyPropertiesHere>
}
}
2016-06-03 11:19:33.343 +08:00 [Information] {
"MyCustomKeyName": {
"key1": "val1",
"key2": "val2"
}
}