Skip to content

Commit f905e94

Browse files
author
Kadluba Christian
committed
Minor refactorings and cleanup.
1 parent cf37ca8 commit f905e94

File tree

5 files changed

+94
-95
lines changed

5 files changed

+94
-95
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/MSSqlServerAuditSink.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,14 @@ public void Emit(LogEvent logEvent)
6868
{
6969
try
7070
{
71-
using (SqlConnection connection = new SqlConnection(_traits.connectionString))
71+
using (SqlConnection connection = new SqlConnection(_traits.ConnectionString))
7272
{
7373
connection.Open();
7474
using (SqlCommand command = connection.CreateCommand())
7575
{
7676
command.CommandType = CommandType.Text;
7777

78-
StringBuilder fieldList = new StringBuilder($"INSERT INTO [{_traits.schemaName}].[{_traits.tableName}] (");
78+
StringBuilder fieldList = new StringBuilder($"INSERT INTO [{_traits.SchemaName}].[{_traits.TableName}] (");
7979
StringBuilder parameterList = new StringBuilder(") VALUES (");
8080

8181
int index = 0;

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/MSSqlServerSink.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,23 @@ protected override async Task EmitBatchAsync(IEnumerable<LogEvent> events)
8787

8888
try
8989
{
90-
using (var cn = new SqlConnection(_traits.connectionString))
90+
using (var cn = new SqlConnection(_traits.ConnectionString))
9191
{
9292
await cn.OpenAsync().ConfigureAwait(false);
93-
using (var copy = _traits.columnOptions.DisableTriggers
93+
using (var copy = _traits.ColumnOptions.DisableTriggers
9494
? new SqlBulkCopy(cn)
9595
: new SqlBulkCopy(cn, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.FireTriggers, null)
9696
)
9797
{
98-
copy.DestinationTableName = string.Format("[{0}].[{1}]", _traits.schemaName, _traits.tableName);
99-
foreach (var column in _traits.eventTable.Columns)
98+
copy.DestinationTableName = string.Format("[{0}].[{1}]", _traits.SchemaName, _traits.TableName);
99+
foreach (var column in _traits.EventTable.Columns)
100100
{
101101
var columnName = ((DataColumn)column).ColumnName;
102102
var mapping = new SqlBulkCopyColumnMapping(columnName, columnName);
103103
copy.ColumnMappings.Add(mapping);
104104
}
105105

106-
await copy.WriteToServerAsync(_traits.eventTable).ConfigureAwait(false);
106+
await copy.WriteToServerAsync(_traits.EventTable).ConfigureAwait(false);
107107
}
108108
}
109109
}
@@ -114,7 +114,7 @@ protected override async Task EmitBatchAsync(IEnumerable<LogEvent> events)
114114
finally
115115
{
116116
// Processed the items, clear for the next run
117-
_traits.eventTable.Clear();
117+
_traits.EventTable.Clear();
118118
}
119119
}
120120

@@ -123,17 +123,17 @@ void FillDataTable(IEnumerable<LogEvent> events)
123123
// Add the new rows to the collection.
124124
foreach (var logEvent in events)
125125
{
126-
var row = _traits.eventTable.NewRow();
126+
var row = _traits.EventTable.NewRow();
127127

128128
foreach (var field in _traits.GetColumnsAndValues(logEvent))
129129
{
130130
row[field.Key] = field.Value;
131131
}
132132

133-
_traits.eventTable.Rows.Add(row);
133+
_traits.EventTable.Rows.Add(row);
134134
}
135135

136-
_traits.eventTable.AcceptChanges();
136+
_traits.EventTable.AcceptChanges();
137137
}
138138

139139
/// <summary>

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/MSSqlServerSinkTraits.cs

Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ namespace Serilog.Sinks.MSSqlServer
2828
/// <summary>Contains common functionality and properties used by both MSSqlServerSinks.</summary>
2929
internal sealed class MSSqlServerSinkTraits : IDisposable
3030
{
31-
public string connectionString { get; }
32-
public string tableName { get; }
33-
public string schemaName { get; }
34-
public ColumnOptions columnOptions { get; }
35-
public IFormatProvider formatProvider { get; }
36-
public ITextFormatter logEventFormatter { get; }
37-
public ISet<string> additionalColumnNames { get; }
38-
public DataTable eventTable { get; }
39-
public ISet<string> standardColumnNames { get; }
31+
public string ConnectionString { get; }
32+
public string TableName { get; }
33+
public string SchemaName { get; }
34+
public ColumnOptions ColumnOptions { get; }
35+
public IFormatProvider FormatProvider { get; }
36+
public ITextFormatter LogEventFormatter { get; }
37+
public ISet<string> AdditionalColumnNames { get; }
38+
public DataTable EventTable { get; }
39+
public ISet<string> StandardColumnNames { get; }
4040

4141
public MSSqlServerSinkTraits(
4242
string connectionString,
@@ -53,41 +53,40 @@ public MSSqlServerSinkTraits(
5353
if (string.IsNullOrWhiteSpace(tableName))
5454
throw new ArgumentNullException(nameof(tableName));
5555

56-
this.connectionString = connectionString;
57-
this.tableName = tableName;
58-
this.schemaName = schemaName;
59-
this.columnOptions = columnOptions ?? new ColumnOptions();
60-
this.formatProvider = formatProvider;
56+
ConnectionString = connectionString;
57+
TableName = tableName;
58+
SchemaName = schemaName;
59+
ColumnOptions = columnOptions ?? new ColumnOptions();
60+
FormatProvider = formatProvider;
6161

62-
standardColumnNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
63-
foreach (var stdCol in this.columnOptions.Store)
62+
StandardColumnNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
63+
foreach (var stdCol in ColumnOptions.Store)
6464
{
65-
var col = this.columnOptions.GetStandardColumnOptions(stdCol);
66-
standardColumnNames.Add(col.ColumnName);
65+
var col = ColumnOptions.GetStandardColumnOptions(stdCol);
66+
StandardColumnNames.Add(col.ColumnName);
6767
}
6868

69-
additionalColumnNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
70-
if (this.columnOptions.AdditionalColumns != null)
71-
foreach (var col in this.columnOptions.AdditionalColumns)
72-
additionalColumnNames.Add(col.ColumnName);
69+
AdditionalColumnNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
70+
if (ColumnOptions.AdditionalColumns != null)
71+
foreach (var col in ColumnOptions.AdditionalColumns)
72+
AdditionalColumnNames.Add(col.ColumnName);
7373

74-
if (this.columnOptions.Store.Contains(StandardColumn.LogEvent))
75-
this.logEventFormatter = logEventFormatter ?? new JsonLogEventFormatter(this);
74+
if (ColumnOptions.Store.Contains(StandardColumn.LogEvent))
75+
LogEventFormatter = logEventFormatter ?? new JsonLogEventFormatter(this);
7676

77-
eventTable = CreateDataTable();
77+
EventTable = CreateDataTable();
7878

7979
if (autoCreateSqlTable)
8080
{
8181
try
8282
{
83-
SqlTableCreator tableCreator = new SqlTableCreator(this.connectionString, this.schemaName, this.tableName, eventTable, this.columnOptions);
83+
SqlTableCreator tableCreator = new SqlTableCreator(ConnectionString, SchemaName, TableName, EventTable, ColumnOptions);
8484
tableCreator.CreateTable(); // return code ignored, 0 = failure?
8585
}
8686
catch (Exception ex)
8787
{
8888
SelfLog.WriteLine($"Exception creating table {tableName}:\n{ex}");
8989
}
90-
9190
}
9291
}
9392

@@ -98,14 +97,14 @@ public MSSqlServerSinkTraits(
9897
/// </returns>
9998
public IEnumerable<KeyValuePair<string, object>> GetColumnsAndValues(LogEvent logEvent)
10099
{
101-
foreach (var column in columnOptions.Store)
100+
foreach (var column in ColumnOptions.Store)
102101
{
103102
// skip Id (auto-incrementing identity)
104103
if(column != StandardColumn.Id)
105104
yield return GetStandardColumnNameAndValue(column, logEvent);
106105
}
107106

108-
if (columnOptions.AdditionalColumns != null)
107+
if (ColumnOptions.AdditionalColumns != null)
109108
{
110109
foreach (var columnValuePair in ConvertPropertiesToColumn(logEvent.Properties))
111110
yield return columnValuePair;
@@ -114,62 +113,62 @@ public IEnumerable<KeyValuePair<string, object>> GetColumnsAndValues(LogEvent lo
114113

115114
public void Dispose()
116115
{
117-
eventTable.Dispose();
116+
EventTable.Dispose();
118117
}
119118

120119
internal KeyValuePair<string, object> GetStandardColumnNameAndValue(StandardColumn column, LogEvent logEvent)
121120
{
122121
switch (column)
123122
{
124123
case StandardColumn.Message:
125-
return new KeyValuePair<string, object>(columnOptions.Message.ColumnName, logEvent.RenderMessage(formatProvider));
124+
return new KeyValuePair<string, object>(ColumnOptions.Message.ColumnName, logEvent.RenderMessage(FormatProvider));
126125
case StandardColumn.MessageTemplate:
127-
return new KeyValuePair<string, object>(columnOptions.MessageTemplate.ColumnName, logEvent.MessageTemplate.Text);
126+
return new KeyValuePair<string, object>(ColumnOptions.MessageTemplate.ColumnName, logEvent.MessageTemplate.Text);
128127
case StandardColumn.Level:
129-
return new KeyValuePair<string, object>(columnOptions.Level.ColumnName, columnOptions.Level.StoreAsEnum ? (object)logEvent.Level : logEvent.Level.ToString());
128+
return new KeyValuePair<string, object>(ColumnOptions.Level.ColumnName, ColumnOptions.Level.StoreAsEnum ? (object)logEvent.Level : logEvent.Level.ToString());
130129
case StandardColumn.TimeStamp:
131130
return GetTimeStampStandardColumnNameAndValue(logEvent);
132131
case StandardColumn.Exception:
133-
return new KeyValuePair<string, object>(columnOptions.Exception.ColumnName, logEvent.Exception != null ? logEvent.Exception.ToString() : null);
132+
return new KeyValuePair<string, object>(ColumnOptions.Exception.ColumnName, logEvent.Exception?.ToString());
134133
case StandardColumn.Properties:
135-
return new KeyValuePair<string, object>(columnOptions.Properties.ColumnName, ConvertPropertiesToXmlStructure(logEvent.Properties));
134+
return new KeyValuePair<string, object>(ColumnOptions.Properties.ColumnName, ConvertPropertiesToXmlStructure(logEvent.Properties));
136135
case StandardColumn.LogEvent:
137-
return new KeyValuePair<string, object>(columnOptions.LogEvent.ColumnName, RenderLogEventColumn(logEvent));
136+
return new KeyValuePair<string, object>(ColumnOptions.LogEvent.ColumnName, RenderLogEventColumn(logEvent));
138137
default:
139138
throw new ArgumentOutOfRangeException();
140139
}
141140
}
142141

143142
private KeyValuePair<string, object> GetTimeStampStandardColumnNameAndValue(LogEvent logEvent)
144143
{
145-
var dateTimeOffset = columnOptions.TimeStamp.ConvertToUtc ? logEvent.Timestamp.ToUniversalTime() : logEvent.Timestamp;
144+
var dateTimeOffset = ColumnOptions.TimeStamp.ConvertToUtc ? logEvent.Timestamp.ToUniversalTime() : logEvent.Timestamp;
146145

147-
if (columnOptions.TimeStamp.DataType == SqlDbType.DateTimeOffset)
148-
return new KeyValuePair<string, object>(columnOptions.TimeStamp.ColumnName, dateTimeOffset);
146+
if (ColumnOptions.TimeStamp.DataType == SqlDbType.DateTimeOffset)
147+
return new KeyValuePair<string, object>(ColumnOptions.TimeStamp.ColumnName, dateTimeOffset);
149148

150-
return new KeyValuePair<string, object>(columnOptions.TimeStamp.ColumnName, dateTimeOffset.DateTime);
149+
return new KeyValuePair<string, object>(ColumnOptions.TimeStamp.ColumnName, dateTimeOffset.DateTime);
151150
}
152151

153152
private string RenderLogEventColumn(LogEvent logEvent)
154153
{
155-
if (columnOptions.LogEvent.ExcludeAdditionalProperties)
154+
if (ColumnOptions.LogEvent.ExcludeAdditionalProperties)
156155
{
157-
var filteredProperties = logEvent.Properties.Where(p => !additionalColumnNames.Contains(p.Key));
156+
var filteredProperties = logEvent.Properties.Where(p => !AdditionalColumnNames.Contains(p.Key));
158157
logEvent = new LogEvent(logEvent.Timestamp, logEvent.Level, logEvent.Exception, logEvent.MessageTemplate, filteredProperties.Select(x => new LogEventProperty(x.Key, x.Value)));
159158
}
160159

161160
var sb = new StringBuilder();
162161
using (var writer = new System.IO.StringWriter(sb))
163-
logEventFormatter.Format(logEvent, writer);
162+
LogEventFormatter.Format(logEvent, writer);
164163
return sb.ToString();
165164
}
166165

167166
private string ConvertPropertiesToXmlStructure(IEnumerable<KeyValuePair<string, LogEventPropertyValue>> properties)
168167
{
169-
var options = columnOptions.Properties;
168+
var options = ColumnOptions.Properties;
170169

171170
if (options.ExcludeAdditionalProperties)
172-
properties = properties.Where(p => !additionalColumnNames.Contains(p.Key));
171+
properties = properties.Where(p => !AdditionalColumnNames.Contains(p.Key));
173172

174173
if (options.PropertiesFilter != null)
175174
{
@@ -220,19 +219,19 @@ private IEnumerable<KeyValuePair<string, object>> ConvertPropertiesToColumn(IRea
220219
{
221220
foreach (var property in properties)
222221
{
223-
if (!eventTable.Columns.Contains(property.Key) || standardColumnNames.Contains(property.Key))
222+
if (!EventTable.Columns.Contains(property.Key) || StandardColumnNames.Contains(property.Key))
224223
continue;
225224

226225
var columnName = property.Key;
227-
var columnType = eventTable.Columns[columnName].DataType;
226+
var columnType = EventTable.Columns[columnName].DataType;
228227

229228
if (!(property.Value is ScalarValue scalarValue))
230229
{
231230
yield return new KeyValuePair<string, object>(columnName, property.Value.ToString());
232231
continue;
233232
}
234233

235-
if (scalarValue.Value == null && eventTable.Columns[columnName].AllowDBNull)
234+
if (scalarValue.Value == null && EventTable.Columns[columnName].AllowDBNull)
236235
{
237236
yield return new KeyValuePair<string, object>(columnName, DBNull.Value);
238237
continue;
@@ -271,24 +270,24 @@ private static bool TryChangeType(object obj, Type type, out object conversion)
271270

272271
private DataTable CreateDataTable()
273272
{
274-
var eventsTable = new DataTable(tableName);
273+
var eventsTable = new DataTable(TableName);
275274

276-
foreach (var standardColumn in columnOptions.Store)
275+
foreach (var standardColumn in ColumnOptions.Store)
277276
{
278-
var standardOpts = columnOptions.GetStandardColumnOptions(standardColumn);
277+
var standardOpts = ColumnOptions.GetStandardColumnOptions(standardColumn);
279278
var dataColumn = standardOpts.AsDataColumn();
280279
eventsTable.Columns.Add(dataColumn);
281-
if(standardOpts == columnOptions.PrimaryKey)
280+
if(standardOpts == ColumnOptions.PrimaryKey)
282281
eventsTable.PrimaryKey = new DataColumn[] { dataColumn };
283282
}
284283

285-
if (columnOptions.AdditionalColumns != null)
284+
if (ColumnOptions.AdditionalColumns != null)
286285
{
287-
foreach(var addCol in columnOptions.AdditionalColumns)
286+
foreach(var addCol in ColumnOptions.AdditionalColumns)
288287
{
289288
var dataColumn = addCol.AsDataColumn();
290289
eventsTable.Columns.Add(dataColumn);
291-
if (addCol == columnOptions.PrimaryKey)
290+
if (addCol == ColumnOptions.PrimaryKey)
292291
eventsTable.PrimaryKey = new DataColumn[] { dataColumn };
293292
}
294293
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ internal class JsonLogEventFormatter : ITextFormatter
3131
static readonly JsonValueFormatter ValueFormatter = new JsonValueFormatter(typeTagName: null);
3232
private const string COMMA_DELIMITER = ",";
3333

34-
MSSqlServerSinkTraits traits;
34+
private readonly MSSqlServerSinkTraits _traits;
3535

3636
/// <summary>
3737
/// Constructor. A reference to the parent Traits object is used so that JSON
@@ -40,7 +40,7 @@ internal class JsonLogEventFormatter : ITextFormatter
4040
/// </summary>
4141
public JsonLogEventFormatter(MSSqlServerSinkTraits parent)
4242
{
43-
traits = parent;
43+
_traits = parent;
4444
}
4545

4646
/// <summary>
@@ -55,7 +55,7 @@ public void Format(LogEvent logEvent, TextWriter output)
5555

5656
string precedingDelimiter = "";
5757

58-
if (traits.columnOptions.LogEvent.ExcludeStandardColumns == false)
58+
if (_traits.ColumnOptions.LogEvent.ExcludeStandardColumns == false)
5959
{
6060
// The XML Properties column has never included the Standard Columns, but prior
6161
// to adding this sink-specific JSON formatter, the LogEvent JSON column relied
@@ -66,7 +66,7 @@ public void Format(LogEvent logEvent, TextWriter output)
6666
// whether Standard Columns are written (specifically, the subset of Standard
6767
// columns that were output by the external JsonFormatter class).
6868

69-
var store = traits.columnOptions.Store;
69+
var store = _traits.ColumnOptions.Store;
7070

7171
WriteIfPresent(StandardColumn.TimeStamp);
7272
WriteIfPresent(StandardColumn.Level);
@@ -80,7 +80,7 @@ void WriteIfPresent(StandardColumn col)
8080
{
8181
output.Write(precedingDelimiter);
8282
precedingDelimiter = COMMA_DELIMITER;
83-
var colData = traits.GetStandardColumnNameAndValue(col, logEvent);
83+
var colData = _traits.GetStandardColumnNameAndValue(col, logEvent);
8484
JsonValueFormatter.WriteQuotedJsonString(colData.Key, output);
8585
output.Write(":");
8686
string value = (col != StandardColumn.TimeStamp) ? (colData.Value ?? string.Empty).ToString() : ((DateTime)colData.Value).ToString("o");

0 commit comments

Comments
 (0)