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部分,直接或通过复制代码重用Serilog
JsonFormatter
应该相当简单


当你实现了格式化程序后,你可以通过
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"
    }
}