log json with serilog log json with serilog json json

log json with serilog


You have to configure your logger to use Json.JsonFormatter and just pass the object when logging info, Serilog will serialize the object.

Configuration

Log.Logger = new LoggerConfiguration()            .WriteTo.RollingFile(new JsonFormatter(), Path.Combine(@"c:\log", "[filename]-{Date}.txt"))            .CreateLogger()


I have used a in log4net to send to Seq. So, when emiting the message, I have added into the threadContext a property for every JProperty in the Json, at the first level only. Now in Seq, I can search by any of the json property. This is an example (take care that message variable should be a Json string before calling this methods).

private void AddProperties(string message)        {            var parsedObject = JObject.Parse(message);            foreach (JProperty prop in parsedObject.Properties())            {                AddProperty(prop);            }        }        private void AddProperty(JProperty message)        {            log4net.ThreadContext.Properties[message.Name] = message.Value.ToString();        }