Skip to content

Commit b1e2aef

Browse files
committed
Removed some public properties from MSSqlServerSinkTraits.
1 parent 1d8d2dd commit b1e2aef

File tree

3 files changed

+35
-32
lines changed

3 files changed

+35
-32
lines changed

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

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ namespace Serilog.Sinks.MSSqlServer
3131
/// </summary>
3232
public class MSSqlServerAuditSink : ILogEventSink, IDisposable
3333
{
34+
private readonly SinkOptions _sinkOptions;
3435
private readonly ISqlConnectionFactory _sqlConnectionFactory;
3536
private readonly MSSqlServerSinkTraits _traits;
3637

@@ -77,25 +78,23 @@ public MSSqlServerAuditSink(
7778
ColumnOptions columnOptions = null,
7879
ITextFormatter logEventFormatter = null)
7980
{
80-
if (sinkOptions?.TableName == null)
81+
_sinkOptions = sinkOptions;
82+
if (_sinkOptions?.TableName == null)
8183
{
8284
throw new InvalidOperationException("Table name must be specified!");
8385
}
8486

85-
columnOptions?.FinalizeConfigurationForSinkConstructor();
87+
columnOptions = columnOptions ?? new ColumnOptions();
88+
columnOptions.FinalizeConfigurationForSinkConstructor();
89+
if (columnOptions.DisableTriggers)
90+
throw new NotSupportedException($"The {nameof(ColumnOptions.DisableTriggers)} option is not supported for auditing.");
8691

87-
if (columnOptions != null)
88-
{
89-
if (columnOptions.DisableTriggers)
90-
throw new NotSupportedException($"The {nameof(ColumnOptions.DisableTriggers)} option is not supported for auditing.");
91-
}
92-
93-
var azureManagedServiceAuthenticator = new AzureManagedServiceAuthenticator(sinkOptions.UseAzureManagedIdentity,
94-
sinkOptions.AzureServiceTokenProviderResource);
92+
var azureManagedServiceAuthenticator = new AzureManagedServiceAuthenticator(_sinkOptions.UseAzureManagedIdentity,
93+
_sinkOptions.AzureServiceTokenProviderResource);
9594
_sqlConnectionFactory = new SqlConnectionFactory(connectionString, azureManagedServiceAuthenticator);
9695

97-
_traits = new MSSqlServerSinkTraits(_sqlConnectionFactory, sinkOptions.TableName, sinkOptions.SchemaName,
98-
columnOptions, formatProvider, sinkOptions.AutoCreateSqlTable, logEventFormatter);
96+
_traits = new MSSqlServerSinkTraits(_sqlConnectionFactory, _sinkOptions.TableName, _sinkOptions.SchemaName,
97+
columnOptions, formatProvider, _sinkOptions.AutoCreateSqlTable, logEventFormatter);
9998
}
10099

101100
/// <summary>Emit the provided log event to the sink.</summary>
@@ -111,7 +110,7 @@ public void Emit(LogEvent logEvent)
111110
{
112111
command.CommandType = CommandType.Text;
113112

114-
var fieldList = new StringBuilder($"INSERT INTO [{_traits.SchemaName}].[{_traits.TableName}] (");
113+
var fieldList = new StringBuilder($"INSERT INTO [{_sinkOptions.SchemaName}].[{_sinkOptions.TableName}] (");
115114
var parameterList = new StringBuilder(") VALUES (");
116115

117116
var index = 0;

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ namespace Serilog.Sinks.MSSqlServer
3333
/// </summary>
3434
public class MSSqlServerSink : PeriodicBatchingSink
3535
{
36+
private readonly SinkOptions _sinkOptions;
37+
private readonly ColumnOptions _columnOptions;
3638
private readonly ISqlConnectionFactory _sqlConnectionFactory;
3739
private readonly MSSqlServerSinkTraits _traits;
3840

@@ -99,19 +101,21 @@ public MSSqlServerSink(
99101
ITextFormatter logEventFormatter = null)
100102
: base(sinkOptions?.BatchPostingLimit ?? DefaultBatchPostingLimit, sinkOptions?.BatchPeriod ?? DefaultPeriod)
101103
{
104+
_sinkOptions = sinkOptions;
102105
if (sinkOptions?.TableName == null)
103106
{
104107
throw new InvalidOperationException("Table name must be specified!");
105108
}
106109

107-
columnOptions?.FinalizeConfigurationForSinkConstructor();
110+
_columnOptions = columnOptions ?? new ColumnOptions();
111+
_columnOptions.FinalizeConfigurationForSinkConstructor();
108112

109113
var azureManagedServiceAuthenticator = new AzureManagedServiceAuthenticator(sinkOptions.UseAzureManagedIdentity,
110114
sinkOptions.AzureServiceTokenProviderResource);
111115
_sqlConnectionFactory = new SqlConnectionFactory(connectionString, azureManagedServiceAuthenticator);
112116

113117
_traits = new MSSqlServerSinkTraits(_sqlConnectionFactory, sinkOptions.TableName, sinkOptions.SchemaName,
114-
columnOptions, formatProvider, sinkOptions.AutoCreateSqlTable, logEventFormatter);
118+
_columnOptions, formatProvider, sinkOptions.AutoCreateSqlTable, logEventFormatter);
115119
}
116120

117121
/// <summary>
@@ -133,12 +137,12 @@ protected override async Task EmitBatchAsync(IEnumerable<LogEvent> events)
133137
using (var cn = _sqlConnectionFactory.Create())
134138
{
135139
await cn.OpenAsync().ConfigureAwait(false);
136-
using (var copy = _traits.ColumnOptions.DisableTriggers
140+
using (var copy = _columnOptions.DisableTriggers
137141
? new SqlBulkCopy(cn)
138142
: new SqlBulkCopy(cn, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.FireTriggers, null)
139143
)
140144
{
141-
copy.DestinationTableName = string.Format(CultureInfo.InvariantCulture, "[{0}].[{1}]", _traits.SchemaName, _traits.TableName);
145+
copy.DestinationTableName = string.Format(CultureInfo.InvariantCulture, "[{0}].[{1}]", _sinkOptions.SchemaName, _sinkOptions.TableName);
142146
foreach (var column in _traits.EventTable.Columns)
143147
{
144148
var columnName = ((DataColumn)column).ColumnName;

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ namespace Serilog.Sinks.MSSqlServer
2727
/// <summary>Contains common functionality and properties used by both MSSqlServerSinks.</summary>
2828
internal class MSSqlServerSinkTraits : IDisposable
2929
{
30+
private readonly string _tableName;
31+
private readonly string _schemaName;
32+
private readonly ColumnOptions _columnOptions;
3033
private readonly ILogEventDataGenerator _logEventDataGenerator;
3134
private bool _disposedValue;
3235

33-
public string TableName { get; }
34-
public string SchemaName { get; }
35-
public ColumnOptions ColumnOptions { get; }
3636
public DataTable EventTable { get; }
3737

3838
public MSSqlServerSinkTraits(
@@ -61,13 +61,13 @@ internal MSSqlServerSinkTraits(
6161
if (string.IsNullOrWhiteSpace(tableName))
6262
throw new ArgumentNullException(nameof(tableName));
6363

64+
_tableName = tableName;
65+
_schemaName = schemaName;
66+
_columnOptions = columnOptions;
67+
6468
if (sqlTableCreator == null)
6569
throw new ArgumentNullException(nameof(sqlTableCreator));
6670

67-
TableName = tableName;
68-
SchemaName = schemaName;
69-
ColumnOptions = columnOptions ?? new ColumnOptions();
70-
7171
// TODO initialize this outside of this class
7272
var standardColumnDataGenerator = new StandardColumnDataGenerator(columnOptions, formatProvider, logEventFormatter);
7373
var propertiesColumnDataGenerator = new PropertiesColumnDataGenerator(columnOptions);
@@ -79,7 +79,7 @@ internal MSSqlServerSinkTraits(
7979
{
8080
try
8181
{
82-
sqlTableCreator.CreateTable(SchemaName, TableName, EventTable, ColumnOptions); // return code ignored, 0 = failure?
82+
sqlTableCreator.CreateTable(_schemaName, _tableName, EventTable, _columnOptions); // return code ignored, 0 = failure?
8383
}
8484
catch (Exception ex)
8585
{
@@ -95,24 +95,24 @@ public IEnumerable<KeyValuePair<string, object>> GetColumnsAndValues(LogEvent lo
9595

9696
private DataTable CreateDataTable()
9797
{
98-
var eventsTable = new DataTable(TableName);
98+
var eventsTable = new DataTable(_tableName);
9999

100-
foreach (var standardColumn in ColumnOptions.Store)
100+
foreach (var standardColumn in _columnOptions.Store)
101101
{
102-
var standardOpts = ColumnOptions.GetStandardColumnOptions(standardColumn);
102+
var standardOpts = _columnOptions.GetStandardColumnOptions(standardColumn);
103103
var dataColumn = standardOpts.AsDataColumn();
104104
eventsTable.Columns.Add(dataColumn);
105-
if (standardOpts == ColumnOptions.PrimaryKey)
105+
if (standardOpts == _columnOptions.PrimaryKey)
106106
eventsTable.PrimaryKey = new DataColumn[] { dataColumn };
107107
}
108108

109-
if (ColumnOptions.AdditionalColumns != null)
109+
if (_columnOptions.AdditionalColumns != null)
110110
{
111-
foreach (var addCol in ColumnOptions.AdditionalColumns)
111+
foreach (var addCol in _columnOptions.AdditionalColumns)
112112
{
113113
var dataColumn = addCol.AsDataColumn();
114114
eventsTable.Columns.Add(dataColumn);
115-
if (addCol == ColumnOptions.PrimaryKey)
115+
if (addCol == _columnOptions.PrimaryKey)
116116
eventsTable.PrimaryKey = new DataColumn[] { dataColumn };
117117
}
118118
}

0 commit comments

Comments
 (0)