protected override void Write(LogEventInfo logEvent) { var dictionary = new Dictionary <string, object>(); if (logEvent.Exception != null) { dictionary.Add("ex", logEvent.Exception.ToString()); dictionary.Add("extyp", logEvent.Exception.GetType().Name); dictionary.Add("hash", logEvent.GetHash()); foreach (var key in logEvent.Exception.Data.Keys) { dictionary.Add(key.ToString(), logEvent.Exception.Data[key]); } } dictionary.Add("logger", logEvent.LoggerName); dictionary.Add("method", Layout.Render(logEvent)); dictionary.Add("level", logEvent.Level.Name); dictionary.Add("message", logEvent.GetFormattedMessage()); dictionary.Add("ver", BuildInfo.Version.ToString()); _logger.Log(dictionary.ToJson()); }