Skip to content

Commit b1b22c4

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

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ internal static SinkDependencies Create(
2222
// unless sink option EnlistInTransaction is set to true.
2323
var sqlConnectionStringBuilderWrapper = new SqlConnectionStringBuilderWrapper(
2424
connectionString, sinkOptions.EnlistInTransaction);
25-
var sqlConnectionFactory = new SqlConnectionFactory(sqlConnectionStringBuilderWrapper);
25+
var sqlConnectionFactory = new SqlConnectionFactory(sqlConnectionStringBuilderWrapper, sinkOptions.ConnectionConfiguration);
2626
var sqlCommandFactory = new SqlCommandFactory();
2727
var dataTableCreator = new DataTableCreator(sinkOptions.TableName, columnOptions);
2828
var sqlCreateTableWriter = new SqlCreateTableWriter(sinkOptions.SchemaName,
@@ -34,7 +34,7 @@ internal static SinkDependencies Create(
3434
InitialCatalog = ""
3535
};
3636
var sqlConnectionFactoryNoDb =
37-
new SqlConnectionFactory(sqlConnectionStringBuilderWrapperNoDb);
37+
new SqlConnectionFactory(sqlConnectionStringBuilderWrapperNoDb, sinkOptions.ConnectionConfiguration);
3838
var sqlCreateDatabaseWriter = new SqlCreateDatabaseWriter(sqlConnectionStringBuilderWrapper.InitialCatalog);
3939

4040
var logEventDataGenerator =

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)