Skip to content

Commit c70b1b2

Browse files
andypeetersckadluba
authored andcommitted
Improve truncating the log message, message template and add truncating the exception message
1 parent bcb4f6b commit c70b1b2

File tree

1 file changed

+8
-30
lines changed

1 file changed

+8
-30
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Output/StandardColumnDataGenerator.cs

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Serilog.Debugging;
88
using Serilog.Events;
99
using Serilog.Formatting;
10+
using Serilog.Sinks.MSSqlServer.Extensions;
1011

1112
namespace Serilog.Sinks.MSSqlServer.Output
1213
{
@@ -44,15 +45,15 @@ public KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn
4445
switch (column)
4546
{
4647
case StandardColumn.Message:
47-
return new KeyValuePair<string, object>(_columnOptions.Message.ColumnName, RenderLogMessage(logEvent));
48+
return new KeyValuePair<string, object>(_columnOptions.Message.ColumnName, TruncateOutput(logEvent.RenderMessage(_formatProvider), _columnOptions.Message.DataLength));
4849
case StandardColumn.MessageTemplate:
49-
return new KeyValuePair<string, object>(_columnOptions.MessageTemplate.ColumnName, TrimMessageTemplate(logEvent));
50+
return new KeyValuePair<string, object>(_columnOptions.MessageTemplate.ColumnName, TruncateOutput(logEvent.MessageTemplate.Text, _columnOptions.MessageTemplate.DataLength));
5051
case StandardColumn.Level:
5152
return new KeyValuePair<string, object>(_columnOptions.Level.ColumnName, _columnOptions.Level.StoreAsEnum ? (object)logEvent.Level : logEvent.Level.ToString());
5253
case StandardColumn.TimeStamp:
5354
return GetTimeStampStandardColumnNameAndValue(logEvent);
5455
case StandardColumn.Exception:
55-
return new KeyValuePair<string, object>(_columnOptions.Exception.ColumnName, logEvent.Exception?.ToString());
56+
return new KeyValuePair<string, object>(_columnOptions.Exception.ColumnName, TruncateOutput(logEvent.Exception?.ToString(), _columnOptions.Exception.DataLength));
5657
case StandardColumn.Properties:
5758
return new KeyValuePair<string, object>(_columnOptions.Properties.ColumnName, ConvertPropertiesToXmlStructure(logEvent.Properties));
5859
case StandardColumn.LogEvent:
@@ -62,33 +63,10 @@ public KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn
6263
}
6364
}
6465

65-
private string RenderLogMessage(LogEvent logEvent)
66-
{
67-
var logMessage = logEvent.RenderMessage(_formatProvider);
68-
var maxAllowedMessageLength = _columnOptions.Message.DataLength;
69-
70-
if (maxAllowedMessageLength > 0 && logMessage.Length > maxAllowedMessageLength)
71-
{
72-
logMessage = logMessage.Substring(0, maxAllowedMessageLength - 3);
73-
logMessage = $"{logMessage}...";
74-
}
75-
76-
return logMessage;
77-
}
78-
79-
private string TrimMessageTemplate(LogEvent logEvent)
80-
{
81-
var messageTemplate = logEvent.MessageTemplate.Text;
82-
var maxAllowedMessageTemplateLength = _columnOptions.MessageTemplate.DataLength;
83-
84-
if (maxAllowedMessageTemplateLength > 0 && messageTemplate.Length > maxAllowedMessageTemplateLength)
85-
{
86-
messageTemplate = messageTemplate.Substring(0, maxAllowedMessageTemplateLength - 3);
87-
messageTemplate = $"{messageTemplate}...";
88-
}
89-
90-
return messageTemplate;
91-
}
66+
private static string TruncateOutput(string value, int dataLength) =>
67+
dataLength < 0
68+
? value // No need to truncate if length set to maximum
69+
: value.Truncate(dataLength, "...");
9270

9371
private KeyValuePair<string, object> GetTimeStampStandardColumnNameAndValue(LogEvent logEvent)
9472
{

0 commit comments

Comments
 (0)