public LogglyEvent CreateLogglyEvent(LogEvent logEvent) { var logglyEvent = new LogglyEvent() { Timestamp = logEvent.Timestamp }; var isHttpTransport = LogglyConfig.Instance.Transport.LogTransport == LogTransport.Https; logglyEvent.Syslog.Level = ToSyslogLevel(logEvent); logglyEvent.Data.AddIfAbsent("Message", logEvent.RenderMessage(_formatProvider)); foreach (var key in logEvent.Properties.Keys) { var propertyValue = logEvent.Properties[key]; var simpleValue = LogglyPropertyFormatter.Simplify(propertyValue, _formatProvider); logglyEvent.Data.AddIfAbsent(key, simpleValue); } if (isHttpTransport) { // syslog will capture these via the header logglyEvent.Data.AddIfAbsent("Level", logEvent.Level.ToString()); } if (logEvent.Exception != null) { logglyEvent.Data.AddIfAbsent("Exception", logEvent.Exception); } return(logglyEvent); }
/// <summary> /// Emit the provided log event to the sink. /// </summary> /// <param name="logEvent">The log event to write.</param> public void Emit(LogEvent logEvent) { var category = "info"; switch (logEvent.Level) { case LogEventLevel.Verbose: case LogEventLevel.Debug: category = "verbose"; break; case LogEventLevel.Information: category = "info"; break; case LogEventLevel.Warning: category = "warning"; break; case LogEventLevel.Error: case LogEventLevel.Fatal: category = "error"; break; default: SelfLog.WriteLine("Unexpected logging level, writing to loggly as Info"); break; } var properties = logEvent.Properties .Select(pv => new { Name = pv.Key, Value = LogglyPropertyFormatter.Simplify(pv.Value) }) .ToDictionary(a => a.Name, b => b.Value); if (logEvent.Exception != null) { properties.Add("Exception", logEvent.Exception); } _client.Log(logEvent.RenderMessage(_formatProvider), category, properties); }