serilog-sinks-spectre icon indicating copy to clipboard operation
serilog-sinks-spectre copied to clipboard

Crash for EF Core logs: System.InvalidOperationException: Encountered malformed markup tag at position 16.

Open SpaceOgre opened this issue 9 months ago • 0 comments

The Sink can't output EF Core logs that contains SQL queries, I guess it might be because brackets are used?

###Stacktrace

2024-05-22T08:35:51.5205282Z Caught exception while emitting to sink Serilog.Sinks.Spectre.SpectreConsoleSink: System.InvalidOperationException: Encountered malformed markup tag at position 16.
   at Spectre.Console.MarkupTokenizer.ReadMarkup() in /_/src/Spectre.Console/Internal/Text/Markup/MarkupTokenizer.cs:line 183
   at Spectre.Console.MarkupTokenizer.MoveNext() in /_/src/Spectre.Console/Internal/Text/Markup/MarkupTokenizer.cs:line 27
   at Spectre.Console.MarkupParser.Parse(String text, Style style) in /_/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:line 19
   at Spectre.Console.Markup..ctor(String text, Style style) in /_/src/Spectre.Console/Widgets/Markup.cs:line 42
   at Serilog.Sinks.Spectre.Renderers.MessageTemplateOutputTokenRenderer.Render(LogEvent logEvent)+MoveNext()
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.SparseArrayBuilder`1.ReserveOrAdd(IEnumerable`1 items)
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToArray()
   at Serilog.Sinks.Spectre.SpectreConsoleSink.Emit(LogEvent logEvent)
   at Serilog.Core.Sinks.SafeAggregateSink.Emit(LogEvent logEvent)

This is how the log is printed using the normal Console Sink:

      [10:32:49 INF] Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT [p].[Id], [p].[ChangedBy], [p].[ChangedOn], [p].[CreatedBy], [p].[CreatedOn], [p].[GroupId], [p].[Name], [t].[CategoriesId], [t].[ParametersId], [t].[Id], [t].[Name]
FROM [Parameters] AS [p]
LEFT JOIN (
    SELECT [c].[CategoriesId], [c].[ParametersId], [c0].[Id], [c0].[Name]
    FROM [CategoryParameter] AS [c]
    INNER JOIN [Categories] AS [c0] ON [c].[CategoriesId] = [c0].[Id]

SpaceOgre avatar May 22 '24 08:05 SpaceOgre