.net 用serilog记录json
我想将任何json记录到serilog属性中。我已经阅读了很多关于serilog和json的内容,但是它是一个结构化的json日志,带有一个消息模板。因此,不要记录这个.net 用serilog记录json,.net,json,seq,serilog,.net,Json,Seq,Serilog,我想将任何json记录到serilog属性中。我已经阅读了很多关于serilog和json的内容,但是它是一个结构化的json日志,带有一个消息模板。因此,不要记录这个Log.Info(“{@text}”,text)我想这样做: var json="{ \"text\": \"hello\" }"; //a json string or a Json object Log.Info(json); 主要区别在于第一种方法有一个消息模板,并且始终有一个“text”属性。我希望json具有不同的结构
Log.Info(“{@text}”,text)代码>我想这样做:
var json="{ \"text\": \"hello\" }"; //a json string or a Json object
Log.Info(json);
主要区别在于第一种方法有一个消息模板,并且始终有一个“text”属性。我希望json具有不同的结构,例如:
var json="{ \"text\": \"hello\", \"text2\": \"hello2\" }"; //a json string or a Json object
Log.Info(json);
我希望获得2个属性,即每个json属性1个属性,而无需定义消息模板。这可能吗?我必须实现自己的JsonFormatter吗?我使用了一个inlog4net
发送到Seq
。因此,在发出消息时,我在threadContext
中为Json中的每个JProperty
添加了一个属性,仅在第一级。现在在Seq中,我可以通过任何json属性进行搜索。这是一个示例(在调用此方法之前,请注意消息变量应该是Json字符串)
您必须将记录器配置为使用Json.JsonFormatter并在记录信息时传递对象,Serilog将序列化该对象
配置
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(new JsonFormatter(), Path.Combine(@"c:\log", "[filename]-{Date}.txt"))
.CreateLogger()
应该注意的是,JSON by是一种基于字符串的交换格式。没有将JSON作为字符串与对象的概念……感谢您的回答。我有一个日志存储库,我想按属性进行搜索,所以有了消息模板,我可以提前定义我的所有属性。这就是我问这个问题的主要原因。您是否将JSON作为JSON.NETJObject
?如果是这样的话,这应该是你想要的。
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(new JsonFormatter(), Path.Combine(@"c:\log", "[filename]-{Date}.txt"))
.CreateLogger()