Skip to content

Commit 3706077

Browse files
committed
SqlConnection config action
Signed-off-by: Nathan Hart <nhart12@gmail.com>
1 parent 83fdfa5 commit 3706077

File tree

6 files changed

+25
-6
lines changed

6 files changed

+25
-6
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Dependencies/SinkDependenciesFactory.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Microsoft.Data.SqlClient;
23
using Serilog.Formatting;
34
using Serilog.Sinks.MSSqlServer.Output;
45
using Serilog.Sinks.MSSqlServer.Platform;
@@ -22,7 +23,7 @@ internal static SinkDependencies Create(
2223
// unless sink option EnlistInTransaction is set to true.
2324
var sqlConnectionStringBuilderWrapper = new SqlConnectionStringBuilderWrapper(
2425
connectionString, sinkOptions.EnlistInTransaction);
25-
var sqlConnectionFactory = new SqlConnectionFactory(sqlConnectionStringBuilderWrapper);
26+
var sqlConnectionFactory = new SqlConnectionFactory(sqlConnectionStringBuilderWrapper, sinkOptions.ConnectionConfiguration);
2627
var sqlCommandFactory = new SqlCommandFactory();
2728
var dataTableCreator = new DataTableCreator(sinkOptions.TableName, columnOptions);
2829
var sqlCreateTableWriter = new SqlCreateTableWriter(sinkOptions.SchemaName,
@@ -34,7 +35,7 @@ internal static SinkDependencies Create(
3435
InitialCatalog = ""
3536
};
3637
var sqlConnectionFactoryNoDb =
37-
new SqlConnectionFactory(sqlConnectionStringBuilderWrapperNoDb);
38+
new SqlConnectionFactory(sqlConnectionStringBuilderWrapperNoDb, sinkOptions.ConnectionConfiguration);
3839
var sqlCreateDatabaseWriter = new SqlCreateDatabaseWriter(sqlConnectionStringBuilderWrapper.InitialCatalog);
3940

4041
var logEventDataGenerator =

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
using System;
16+
using Microsoft.Data.SqlClient;
1617
using Serilog.Core;
1718
using Serilog.Events;
1819
using Serilog.Formatting;
@@ -67,12 +68,14 @@ public MSSqlServerAuditSink(
6768
/// <param name="formatProvider">Supplies culture-specific formatting information, or null.</param>
6869
/// <param name="columnOptions">Options that pertain to columns</param>
6970
/// <param name="logEventFormatter">Supplies custom formatter for the LogEvent column, or null</param>
71+
/// <param name="connectionConfiguration">Optional action to perform additional configuraton on underyling SQLConnection</param>
7072
public MSSqlServerAuditSink(
7173
string connectionString,
7274
MSSqlServerSinkOptions sinkOptions,
7375
IFormatProvider formatProvider = null,
7476
ColumnOptions columnOptions = null,
75-
ITextFormatter logEventFormatter = null)
77+
ITextFormatter logEventFormatter = null,
78+
Action<SqlConnection> connectionConfiguration = null)
7679
: this(sinkOptions, columnOptions,
7780
SinkDependenciesFactory.Create(connectionString, sinkOptions, formatProvider, columnOptions, logEventFormatter))
7881
{

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using Serilog.Sinks.MSSqlServer.Dependencies;
2121
using Serilog.Sinks.MSSqlServer.Platform;
2222
using Serilog.Core;
23+
using Microsoft.Data.SqlClient;
2324

2425
namespace Serilog.Sinks.MSSqlServer
2526
{

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/MSSqlServerSinkOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Microsoft.Data.SqlClient;
23
using Serilog.Core;
34

45
namespace Serilog.Sinks.MSSqlServer
@@ -83,5 +84,10 @@ internal MSSqlServerSinkOptions(
8384
/// Flag to use <see cref="Microsoft.Data.SqlClient.SqlBulkCopy"/> instead of individual INSERT statements (default: true)
8485
/// </summary>
8586
public bool UseSqlBulkCopy { get; set; }
87+
88+
/// <summary>
89+
/// Supplies an extension point for customizing the underyling SqlConnection
90+
/// </summary>
91+
public Action<SqlConnection> ConnectionConfiguration { get; set; }
8692
}
8793
}

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Platform/SqlClient/SqlConnectionWrapper.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ internal class SqlConnectionWrapper : ISqlConnectionWrapper
99
private readonly SqlConnection _sqlConnection;
1010
private bool _disposedValue;
1111

12-
public SqlConnectionWrapper(string connectionString)
12+
public SqlConnectionWrapper(string connectionString, Action<SqlConnection> connectionConfiguration = null)
1313
{
1414
_sqlConnection = new SqlConnection(connectionString);
15+
if (connectionConfiguration != null)
16+
{
17+
connectionConfiguration(_sqlConnection);
18+
}
1519
}
1620

1721
public SqlConnection SqlConnection => _sqlConnection;
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Microsoft.Data.SqlClient;
23
using Serilog.Sinks.MSSqlServer.Platform.SqlClient;
34

45
namespace Serilog.Sinks.MSSqlServer.Platform
@@ -7,18 +8,21 @@ internal class SqlConnectionFactory : ISqlConnectionFactory
78
{
89
private readonly string _connectionString;
910
private readonly ISqlConnectionStringBuilderWrapper _sqlConnectionStringBuilderWrapper;
11+
private readonly Action<SqlConnection> _connectionConfiguration;
1012

11-
public SqlConnectionFactory(ISqlConnectionStringBuilderWrapper sqlConnectionStringBuilderWrapper)
13+
public SqlConnectionFactory(ISqlConnectionStringBuilderWrapper sqlConnectionStringBuilderWrapper,
14+
Action<SqlConnection> connectionConfiguration = null)
1215
{
1316
_sqlConnectionStringBuilderWrapper = sqlConnectionStringBuilderWrapper
1417
?? throw new ArgumentNullException(nameof(sqlConnectionStringBuilderWrapper));
1518

1619
_connectionString = _sqlConnectionStringBuilderWrapper.ConnectionString;
20+
_connectionConfiguration = connectionConfiguration;
1721
}
1822

1923
public ISqlConnectionWrapper Create()
2024
{
21-
return new SqlConnectionWrapper(_connectionString);
25+
return new SqlConnectionWrapper(_connectionString, _connectionConfiguration);
2226
}
2327
}
2428
}

0 commit comments

Comments
 (0)