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);
        }
Exemplo n.º 2
0
        /// <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);
        }