Skip to content

Commit beeed45

Browse files
nhart12Nathan Hart
authored andcommitted
Fixes for PR review
1 parent 0692a6a commit beeed45

File tree

10 files changed

+22
-24
lines changed

10 files changed

+22
-24
lines changed

src/Serilog.Sinks.MSSqlServer/Extensions/StringExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ namespace Serilog.Sinks.MSSqlServer.Extensions
44
{
55
internal static class StringExtensions
66
{
7+
public static string TruncateOutput(this string value, int dataLength) =>
8+
dataLength < 0
9+
? value // No need to truncate if length set to maximum
10+
: value.Truncate(dataLength, "...");
11+
712
public static string Truncate(this string value, int maxLength, string suffix)
813
{
914
if (value == null) return null;

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/ColumnOptions/ExceptionColumnOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ExceptionColumnOptions() : base()
2727
get => base.DataType;
2828
set
2929
{
30-
if (!SqlDataTypes.VariableCharactorColumnTypes.Contains(value))
30+
if (!SqlDataTypes.VariableCharacterColumnTypes.Contains(value))
3131
throw new ArgumentException("The Standard Column \"Exception\" must be NVarChar or VarChar.");
3232
base.DataType = value;
3333
}

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/ColumnOptions/LevelColumnOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public LevelColumnOptions() : base()
2828
get => base.DataType;
2929
set
3030
{
31-
if (!SqlDataTypes.VariableCharactorColumnTypes.Contains(value) && value != SqlDbType.TinyInt)
31+
if (!SqlDataTypes.VariableCharacterColumnTypes.Contains(value) && value != SqlDbType.TinyInt)
3232
throw new ArgumentException("The Standard Column \"Level\" must be of data type NVarChar, VarChar or TinyInt.");
3333
base.DataType = value;
3434
}

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/ColumnOptions/LogEventColumnOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public LogEventColumnOptions() : base()
2727
get => base.DataType;
2828
set
2929
{
30-
if (!SqlDataTypes.VariableCharactorColumnTypes.Contains(value))
30+
if (!SqlDataTypes.VariableCharacterColumnTypes.Contains(value))
3131
throw new ArgumentException("The Standard Column \"LogEvent\" must be NVarChar or VarChar.");
3232
base.DataType = value;
3333
}

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/ColumnOptions/MessageColumnOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public MessageColumnOptions() : base()
2727
get => base.DataType;
2828
set
2929
{
30-
if (!SqlDataTypes.VariableCharactorColumnTypes.Contains(value))
30+
if (!SqlDataTypes.VariableCharacterColumnTypes.Contains(value))
3131
throw new ArgumentException("The Standard Column \"Message\" must be NVarChar or VarChar.");
3232
base.DataType = value;
3333
}

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/ColumnOptions/MessageTemplateColumnOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public MessageTemplateColumnOptions() : base()
2727
get => base.DataType;
2828
set
2929
{
30-
if (!SqlDataTypes.VariableCharactorColumnTypes.Contains(value))
30+
if (!SqlDataTypes.VariableCharacterColumnTypes.Contains(value))
3131
throw new ArgumentException("The Standard Column \"MessageTemplate\" must be NVarChar or VarChar.");
3232
base.DataType = value;
3333
}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public KeyValuePair<string, object> GetAdditionalColumnNameAndValue(SqlColumn ad
4848
{
4949
if (SqlDataTypes.DataLengthRequired.Contains(additionalColumn.DataType))
5050
{
51-
return new KeyValuePair<string, object>(columnName, TruncateOutput((string)scalarValue.Value, additionalColumn.DataLength));
51+
return new KeyValuePair<string, object>(columnName, scalarValue.Value.ToString().TruncateOutput(additionalColumn.DataLength));
5252

5353
}
5454
return new KeyValuePair<string, object>(columnName, scalarValue.Value);
@@ -60,15 +60,13 @@ public KeyValuePair<string, object> GetAdditionalColumnNameAndValue(SqlColumn ad
6060
}
6161
else
6262
{
63-
return new KeyValuePair<string, object>(columnName, DBNull.Value);
63+
if (additionalColumn.AllowNull) {
64+
return new KeyValuePair<string, object>(columnName, DBNull.Value);
65+
}
66+
return new KeyValuePair<string, object>(columnName, property.Value.ToString());
6467
}
6568
}
6669

67-
private static string TruncateOutput(string value, int dataLength) =>
68-
dataLength < 0
69-
? value // No need to truncate if length set to maximum
70-
: value.Truncate(dataLength, string.Empty);
71-
7270
private static bool TryChangeType(object obj, Type type, out object conversion)
7371
{
7472
conversion = null;

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ public KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn
4545
switch (column)
4646
{
4747
case StandardColumn.Message:
48-
return new KeyValuePair<string, object>(_columnOptions.Message.ColumnName, TruncateOutput(logEvent.RenderMessage(_formatProvider), _columnOptions.Message.DataLength));
48+
return new KeyValuePair<string, object>(_columnOptions.Message.ColumnName, logEvent.RenderMessage(_formatProvider).TruncateOutput(_columnOptions.Message.DataLength));
4949
case StandardColumn.MessageTemplate:
50-
return new KeyValuePair<string, object>(_columnOptions.MessageTemplate.ColumnName, TruncateOutput(logEvent.MessageTemplate.Text, _columnOptions.MessageTemplate.DataLength));
50+
return new KeyValuePair<string, object>(_columnOptions.MessageTemplate.ColumnName, logEvent.MessageTemplate.Text.TruncateOutput(_columnOptions.MessageTemplate.DataLength));
5151
case StandardColumn.Level:
5252
return new KeyValuePair<string, object>(_columnOptions.Level.ColumnName, _columnOptions.Level.StoreAsEnum ? (object)logEvent.Level : logEvent.Level.ToString());
5353
case StandardColumn.TimeStamp:
5454
return GetTimeStampStandardColumnNameAndValue(logEvent);
5555
case StandardColumn.Exception:
56-
return new KeyValuePair<string, object>(_columnOptions.Exception.ColumnName, TruncateOutput(logEvent.Exception?.ToString(), _columnOptions.Exception.DataLength));
56+
return new KeyValuePair<string, object>(_columnOptions.Exception.ColumnName, logEvent.Exception?.ToString().TruncateOutput(_columnOptions.Exception.DataLength));
5757
case StandardColumn.Properties:
5858
return new KeyValuePair<string, object>(_columnOptions.Properties.ColumnName, ConvertPropertiesToXmlStructure(logEvent.Properties));
5959
case StandardColumn.LogEvent:
@@ -63,11 +63,6 @@ public KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn
6363
}
6464
}
6565

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, "...");
70-
7166
private KeyValuePair<string, object> GetTimeStampStandardColumnNameAndValue(LogEvent logEvent)
7267
{
7368
var dateTimeOffset = _columnOptions.TimeStamp.ConvertToUtc ? logEvent.Timestamp.ToUniversalTime() : logEvent.Timestamp;

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/SqlDataTypes.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
34
using System.Data;
45

56
namespace Serilog.Sinks.MSSqlServer
@@ -54,11 +55,10 @@ public static class SqlDataTypes
5455
/// <summary>
5556
/// SQL column types for supported strings
5657
/// </summary>
57-
public static readonly HashSet<SqlDbType> VariableCharactorColumnTypes = new HashSet<SqlDbType>
58-
{
58+
public static readonly ReadOnlyCollection<SqlDbType> VariableCharacterColumnTypes = new(new[] {
5959
SqlDbType.NVarChar,
6060
SqlDbType.VarChar
61-
};
61+
});
6262

6363
/// <summary>
6464
/// The SQL column types which require a non-zero DataLength property.

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/Output/AdditionalColumnDataGeneratorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public void GetAdditionalColumnNameAndValueReturnsTruncatedForCharacterTypesWith
200200
// Assert
201201
_columnSimplePropertyValueResolver.Verify(r => r.GetPropertyValueForColumn(additionalColumn, properties), Times.Once);
202202
Assert.Equal(columnName, result.Key);
203-
Assert.Equal("Additional", result.Value);
203+
Assert.Equal("Additio...", result.Value);
204204
}
205205
}
206206
}

0 commit comments

Comments
 (0)