/// <inheritdoc /> public void Log(LogEvent @event) { if (@event == null) { return; } var str = LogEventFormatter.Format(@event, settings.OutputTemplate, settings.FormatProvider); lock (Sync) { if (settings.ColorsEnabled && consoleFeaturesDetector.AreColorsSupported) { if (!settings.ColorMapping.TryGetValue(@event.Level, out var color)) { color = ConsoleColor.Gray; } using (consoleColorChanger.ChangeColor(color)) System.Console.Out.Write(str); } else { System.Console.Out.Write(str); } } }
public void Should_correctly_render_events_using_provided_template() { var template = OutputTemplate.Parse("{Level} {Message}"); var @event = new LogEvent(LogLevel.Warn, DateTimeOffset.Now, "Hello, {User}!") .WithProperty("User", "Vostok"); var result = LogEventFormatter.Format(@event, template); result.Should().Be("WARN Hello, Vostok!"); Console.Out.WriteLine(result); }
private string RenderLogEventColumn(LogEvent logEvent) { if (ColumnOptions.LogEvent.ExcludeAdditionalProperties) { var filteredProperties = logEvent.Properties.Where(p => !AdditionalColumnNames.Contains(p.Key)); logEvent = new LogEvent(logEvent.Timestamp, logEvent.Level, logEvent.Exception, logEvent.MessageTemplate, filteredProperties.Select(x => new LogEventProperty(x.Key, x.Value))); } var sb = new StringBuilder(); using (var writer = new System.IO.StringWriter(sb)) LogEventFormatter.Format(logEvent, writer); return(sb.ToString()); }
public void Log(LogEvent logEvent) { if (logEvent == null) { return; } if (logEvent.Exception is ApiRequestException) { return; } var sourceContext = LoggerSetup.GetSourceContext(logEvent); var renderedEvent = LogEventFormatter.Format(logEvent, OutputTemplate).EscapeMarkdown(); var message = $"{logEvent.Level} log message from *{sourceContext}*:\n\n```{renderedEvent}```"; errorsBot.PostToChannel(message, ParseMode.Markdown); }
public static LoggingEvent TranslateEvent([NotNull] ILogger logger, [NotNull] LogEvent @event, bool useVostokTemplate = false) { var level = TranslateLevel(@event.Level); var message = useVostokTemplate ? LogEventFormatter.Format(@event, Template) : LogMessageFormatter.Format(@event); var timestamp = @event.Timestamp.UtcDateTime; var loggingEvent = new LoggingEvent(typeof(Logger), logger.Repository, logger.Name, level, message, @event.Exception); FillProperties(loggingEvent, @event.Properties); // (iloktionov): Unfortunately, log4net's LoggingEvent does not have a constructor that allows to pass both structured exception and timestamp. // (iloktionov): Constructor with Exception parameter just uses DateTime.UtcNow for timestamp. // (iloktionov): Constructor with LoggingEventData only allows to pass exception string instead of exception object. // (iloktionov): So we take the first ctor and use some dirty expressions to set timestamp in private LoggingEventData instance. timestampSetter?.Invoke(loggingEvent, timestamp); return(loggingEvent); }
public void Log(LogEvent @event) { if (@event is null) { return; } if (!IsEnabledFor(@event.Level)) { return; } var logLevel = ConvertLogLevel(@event.Level); var message = settings.UseVostokTemplate ? LogEventFormatter.Format(@event, Template) : LogMessageFormatter.Format(@event); var state = new FormattedLogValues(message, Array.Empty <object>()); logger.Log(logLevel, NullEventId, state, @event.Exception, MessageFormatter); }
public void Log(LogEvent @event) { if (@event is null) { return; } var logLevel = TranslateLogLevel(@event.Level); if (!IsEnabledFor(logLevel)) { return; } logger.Log(logLevel, NullEventId, new VostokLogEventWrapper(@event), @event.Exception, FormatMessage); string FormatMessage(VostokLogEventWrapper logEventWrapper, Exception ex) { return(settings.UseVostokTemplate ? LogEventFormatter.Format(logEventWrapper.LogEvent, Template) : LogMessageFormatter.Format(logEventWrapper.LogEvent)); } }
public void WriteLogEvent(LogEventInfo eventInfo) => LogEventFormatter.Format(eventInfo.Event, writer, eventInfo.Settings.OutputTemplate, eventInfo.Settings.FormatProvider);