Exemple #1
0
 public LogEventDataGeneratorTests()
 {
     _columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();
     _standardColumnDataGeneratorMock = new Mock <IStandardColumnDataGenerator>();
     _propertiesColumnDataGenerator   = new Mock <IPropertiesColumnDataGenerator>();
     _sut = new LogEventDataGenerator(_columnOptions, _standardColumnDataGeneratorMock.Object, _propertiesColumnDataGenerator.Object);
 }
        internal static SinkDependencies Create(
            string connectionString,
            MSSqlServerSinkOptions sinkOptions,
            IFormatProvider formatProvider,
            ColumnOptions columnOptions,
            ITextFormatter logEventFormatter)
        {
            columnOptions = columnOptions ?? new ColumnOptions();
            columnOptions.FinalizeConfigurationForSinkConstructor();

            var sqlConnectionFactory =
                new SqlConnectionFactory(connectionString,
                                         sinkOptions?.EnlistInTransaction ?? default,
                                         sinkOptions?.UseAzureManagedIdentity ?? default,
                                         new SqlConnectionStringBuilderWrapper(),
                                         new AzureManagedServiceAuthenticator(
                                             sinkOptions?.UseAzureManagedIdentity ?? default,
                                             sinkOptions.AzureServiceTokenProviderResource,
                                             sinkOptions.AzureTenantId));
            var logEventDataGenerator =
                new LogEventDataGenerator(columnOptions,
                                          new StandardColumnDataGenerator(columnOptions, formatProvider,
                                                                          new XmlPropertyFormatter(),
                                                                          logEventFormatter),
                                          new PropertiesColumnDataGenerator(columnOptions));

            var sinkDependencies = new SinkDependencies
            {
                SqlTableCreator = new SqlTableCreator(
                    sinkOptions.TableName, sinkOptions.SchemaName, columnOptions,
                    new SqlCreateTableWriter(), sqlConnectionFactory),
                DataTableCreator   = new DataTableCreator(sinkOptions.TableName, columnOptions),
                SqlBulkBatchWriter = new SqlBulkBatchWriter(
                    sinkOptions.TableName, sinkOptions.SchemaName,
                    columnOptions.DisableTriggers, sqlConnectionFactory, logEventDataGenerator),
                SqlLogEventWriter = new SqlLogEventWriter(
                    sinkOptions.TableName, sinkOptions.SchemaName,
                    sqlConnectionFactory, logEventDataGenerator)
            };

            return(sinkDependencies);
        }