From 8884d09bf229a661b794bcfa352f3bd6545f800a Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 5 Aug 2022 18:05:49 -0600 Subject: [PATCH] Add styling options to small keywords in exception traces --- src/Options/SpectreLoggingBuilder.Defaults.cs | 8 +++++++- src/Rendering/ExceptionRenderer.Formatting.cs | 8 ++++++++ src/Rendering/ExceptionRenderer.cs | 9 ++++----- src/Rendering/RendererPipeline.cs | 3 --- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Options/SpectreLoggingBuilder.Defaults.cs b/src/Options/SpectreLoggingBuilder.Defaults.cs index c817471..f31dd14 100644 --- a/src/Options/SpectreLoggingBuilder.Defaults.cs +++ b/src/Options/SpectreLoggingBuilder.Defaults.cs @@ -12,7 +12,7 @@ private void ConfigureDefaults() { ConfigureProfile(LogLevel.Trace, profile => { - var baseColor = $"[{Color.Grey35}]"; + var baseColor = Color.Grey35; profile.OutputTemplate = "[grey35][[{DateTime:T} Trce]] {Message}{NewLine}{Exception}[/]"; profile.DefaultLogValueStyle = $"[{Color.Grey46}]"; profile @@ -20,6 +20,7 @@ private void ConfigureDefaults() .AddTypeStyle(baseColor) .AddTypeStyle(Color.DarkViolet) .AddTypeStyle(Color.DarkGoldenrod) + .AddTypeStyle(baseColor) .AddTypeStyle(baseColor) .AddTypeStyle(baseColor); }); @@ -39,6 +40,7 @@ private void ConfigureDefaults() .AddTypeStyle(Color.DarkViolet) .AddTypeStyle(Color.Grey66) .AddTypeStyle(Color.DarkGoldenrod) + .AddTypeStyle(Color.Grey35) .AddTypeStyle(Color.Grey70) .AddTypeStyle(Color.Grey46) .AddTypeStyle(Color.Grey46) @@ -62,6 +64,7 @@ private void ConfigureDefaults() .AddTypeStyle(Color.Magenta3_2) .AddTypeStyle(Color.Grey66) .AddTypeStyle(Color.Gold3_1) + .AddTypeStyle(Color.Grey42) .AddTypeStyle(Color.Grey70) .AddTypeStyle(Color.Grey85) .AddTypeStyle(Color.Grey) @@ -85,6 +88,7 @@ private void ConfigureDefaults() .AddTypeStyle(Color.Magenta3_2) .AddTypeStyle(Color.Grey66) .AddTypeStyle(Color.Gold3_1) + .AddTypeStyle(Color.Grey42) .AddTypeStyle(Color.Grey70) .AddTypeStyle(Color.Grey85) .AddTypeStyle(Color.Grey85) @@ -108,6 +112,7 @@ private void ConfigureDefaults() .AddTypeStyle(Color.Magenta3_2) .AddTypeStyle(Color.Grey66) .AddTypeStyle(Color.Gold3_1) + .AddTypeStyle(Color.Grey42) .AddTypeStyle(Color.Grey70) .AddTypeStyle(Color.Grey85) .AddTypeStyle(Color.Grey85) @@ -131,6 +136,7 @@ private void ConfigureDefaults() .AddTypeStyle(Color.Magenta3_2) .AddTypeStyle(Color.Grey66) .AddTypeStyle(Color.Gold3_1) + .AddTypeStyle(Color.Grey42) .AddTypeStyle(Color.Grey70) .AddTypeStyle(Color.Grey85) .AddTypeStyle(Color.Grey85) diff --git a/src/Rendering/ExceptionRenderer.Formatting.cs b/src/Rendering/ExceptionRenderer.Formatting.cs index 5f08add..2ebaca5 100644 --- a/src/Rendering/ExceptionRenderer.Formatting.cs +++ b/src/Rendering/ExceptionRenderer.Formatting.cs @@ -68,5 +68,13 @@ public sealed class SourceLocationValue : ValueWrapper { internal SourceLocationValue(int lineNumber) : base(lineNumber) {} } + + /// + /// Wraps any other text in an exception message. + /// + public sealed class TextValue : ValueWrapper + { + internal TextValue(string str) : base(str) {} + } } } \ No newline at end of file diff --git a/src/Rendering/ExceptionRenderer.cs b/src/Rendering/ExceptionRenderer.cs index 882010b..d8453c0 100644 --- a/src/Rendering/ExceptionRenderer.cs +++ b/src/Rendering/ExceptionRenderer.cs @@ -115,9 +115,6 @@ private static void PrintStackTrace( var trace = new StackTrace(exception, fNeedFileInfo: true); var frames = trace.GetFrames(); - - if (frames == null) - return; var length = Math.Min(frames.Length, options.MaxStackFrames); var hiddenCount = frames.Length - options.MaxStackFrames; @@ -151,12 +148,13 @@ private static void PrintStackFrame( if (method == null) return; + + buffer.WriteLogValue(profile, null, new TextValue("at ")); buffer.WriteLogValue(profile, null, new MethodNameValue(method.Name), name => { var formattedMethodType = TypeNameFormatter.Format(method.DeclaringType!); - buffer.Write("at "); buffer.Write(formattedMethodType); buffer.Write('.'); buffer.Write(name); @@ -234,9 +232,10 @@ private static void PrintSourcePath( if (string.IsNullOrWhiteSpace(file)) return; + buffer.WriteLogValue(profile, null, new TextValue(" in ")); + buffer.WriteLogValue(profile, null, new SourceDirectoryValue(directory), value => { - buffer.Write(" in "); buffer.Write(value); buffer.WriteLogValue(profile, null, new SourceFileValue(file)); diff --git a/src/Rendering/RendererPipeline.cs b/src/Rendering/RendererPipeline.cs index 9be5a89..3e636c8 100644 --- a/src/Rendering/RendererPipeline.cs +++ b/src/Rendering/RendererPipeline.cs @@ -1,12 +1,9 @@ -using System; using System.Collections.Generic; using System.Linq; -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; using Microsoft.Extensions.Options; using Vertical.SpectreLogger.Core; -using Vertical.SpectreLogger.Internal; using Vertical.SpectreLogger.Options; using Vertical.SpectreLogger.Output; using Vertical.SpectreLogger.Templates;