Skip to content

Commit a5f335a

Browse files
committed
Optimize JSON writing with pre-encoded property names
1 parent f589925 commit a5f335a

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

src/Serilog.Sinks.SqlServer/JsonWriter.cs

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ namespace Serilog.Sinks.SqlServer;
1313
/// </summary>
1414
public static class JsonWriter
1515
{
16+
// Pre-encoded JSON property names for exception details
17+
private static readonly JsonEncodedText MessageProperty = JsonEncodedText.Encode("Message");
18+
private static readonly JsonEncodedText BaseMessageProperty = JsonEncodedText.Encode("BaseMessage");
19+
private static readonly JsonEncodedText TypeProperty = JsonEncodedText.Encode("Type");
20+
private static readonly JsonEncodedText TextProperty = JsonEncodedText.Encode("Text");
21+
private static readonly JsonEncodedText ErrorCodeProperty = JsonEncodedText.Encode("ErrorCode");
22+
private static readonly JsonEncodedText HResultProperty = JsonEncodedText.Encode("HResult");
23+
private static readonly JsonEncodedText SourceProperty = JsonEncodedText.Encode("Source");
24+
private static readonly JsonEncodedText MethodNameProperty = JsonEncodedText.Encode("MethodName");
25+
private static readonly JsonEncodedText ModuleNameProperty = JsonEncodedText.Encode("ModuleName");
26+
private static readonly JsonEncodedText ModuleVersionProperty = JsonEncodedText.Encode("ModuleVersion");
27+
1628
/// <summary>
1729
/// Writes an exception to a JSON string representation.
1830
/// </summary>
@@ -47,33 +59,33 @@ public static class JsonWriter
4759
{
4860
writer.WriteStartObject();
4961

50-
writer.WriteString("Message", exception.Message);
62+
writer.WriteString(MessageProperty, exception.Message);
5163

5264
// include base exception message
5365
if (exception.InnerException != null)
54-
writer.WriteString("BaseMessage", exception.GetBaseException().Message);
66+
writer.WriteString(BaseMessageProperty, exception.GetBaseException().Message);
5567

56-
writer.WriteString("Type", exception.GetType().FullName);
57-
writer.WriteString("Text", exception.ToString());
68+
writer.WriteString(TypeProperty, exception.GetType().FullName);
69+
writer.WriteString(TextProperty, exception.ToString());
5870

5971
if (exception is ExternalException external)
60-
writer.WriteNumber("ErrorCode", external.ErrorCode);
72+
writer.WriteNumber(ErrorCodeProperty, external.ErrorCode);
6173

62-
writer.WriteNumber("HResult", exception.HResult);
74+
writer.WriteNumber(HResultProperty, exception.HResult);
6375

6476
if (!string.IsNullOrEmpty(exception.Source))
65-
writer.WriteString("Source", exception.Source);
77+
writer.WriteString(SourceProperty, exception.Source);
6678

6779
var method = exception.TargetSite;
6880
if (method != null)
6981
{
70-
writer.WriteString("MethodName", method.Name);
82+
writer.WriteString(MethodNameProperty, method.Name);
7183

7284
var assembly = method.Module?.Assembly?.GetName();
7385
if (assembly != null)
7486
{
75-
writer.WriteString("ModuleName", assembly.Name);
76-
writer.WriteString("ModuleVersion", assembly.Version?.ToString());
87+
writer.WriteString(ModuleNameProperty, assembly.Name);
88+
writer.WriteString(ModuleVersionProperty, assembly.Version?.ToString());
7789
}
7890
}
7991

0 commit comments

Comments
 (0)