public MessageTemplateOutputTokenRenderer(ConsoleTheme theme, PropertyToken token, IFormatProvider formatProvider) { _theme = theme ?? throw new ArgumentNullException(nameof(theme)); _token = token ?? throw new ArgumentNullException(nameof(token)); bool isLiteral = false, isJson = false; if (token.Format != null) { for (var i = 0; i < token.Format.Length; ++i) { if (token.Format[i] == 'l') { isLiteral = true; } else if (token.Format[i] == 'j') { isJson = true; } } } var valueFormatter = isJson ? (ThemedValueFormatter) new ThemedJsonValueFormatter(theme, formatProvider) : new ThemedDisplayValueFormatter(theme, formatProvider); _renderer = new ThemedMessageTemplateRenderer(theme, valueFormatter, isLiteral); }
public MessageTemplateOutputTokenRenderer(RichTextBoxTheme theme, PropertyToken token, IFormatProvider formatProvider) { _theme = theme ?? throw new ArgumentNullException(nameof(theme)); _token = token ?? throw new ArgumentNullException(nameof(token)); var isLiteral = false; var isJson = false; if (token.Format != null) { // ReSharper disable once ForCanBeConvertedToForeach for (var i = 0; i < token.Format.Length; ++i) { switch (token.Format[i]) { case 'l': isLiteral = true; break; case 'j': isJson = true; break; } } } var valueFormatter = isJson ? (ThemedValueFormatter) new ThemedJsonValueFormatter(theme, formatProvider) : new ThemedDisplayValueFormatter(theme, formatProvider); _renderer = new ThemedMessageTemplateRenderer(theme, valueFormatter, isLiteral); }
static string Render(IFormatProvider formatProvider, string messageTemplate, params object[] properties) { var binder = new LoggerConfiguration().CreateLogger(); binder.BindMessageTemplate(messageTemplate, properties, out var mt, out var props); var output = new StringBuilder(); var writer = new StringWriter(output); var renderer = new ThemedMessageTemplateRenderer(ConsoleTheme.None, new ThemedDisplayValueFormatter(ConsoleTheme.None, formatProvider), false); renderer.Render(mt, props.ToDictionary(p => p.Name, p => p.Value), writer); writer.Flush(); return(output.ToString()); }