Serilog MsSql + Serilog.Exception. Сопоставить ExceptionDetail.Type в SqlColumn

Я пытаюсь добавить дополнительный столбец в свой журнал в SQL Server.

Я использую Serilog.Sinks.MSSqlServer (5.4.0) + Serilog.Exception (5.4.0)

Моя конфигурация Serilog

    public static void ConfigureSerilog()
    {
        var configuration = ConfigurationReader.ReadConfiguration();

        var columnOptions = new ColumnOptions
        {
            AdditionalColumns = new Collection<SqlColumn>
            {
                new SqlColumn
                    {ColumnName = "ExceptionType", PropertyName = "ExceptionDetail.Type", DataType = SqlDbType.NVarChar, DataLength = -1, AllowNull = true },

                new SqlColumn
                    {ColumnName = "RequestPath", PropertyName = "RequestPath", DataType = SqlDbType.NVarChar, DataLength = -1, AllowNull = true},

                new SqlColumn
                    {ColumnName = "SourceContext", PropertyName = "SourceContext", DataType = SqlDbType.NVarChar, DataLength = -1, AllowNull = true},
            }
        };

        Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .Enrich.WithExceptionDetails()
            .MinimumLevel.Is(LogEventLevel.Information)
            .WriteTo.MSSqlServer(
                connectionString: configuration.GetConnectionString(Const.ConnectionString),
                sinkOptions: new SinkOptions { TableName = "Application", SchemaName = "Log" },
                columnOptions: columnOptions)
            .CreateLogger();
    }

конец моего контекста:

<properties>
    <property key='SourceContext'>XXX.WebApi.Controllers.LogController</property>
    <property key='ActionId'>219170ab-23c0-4b6b-85aa-e6bbe8d8aefe</property>
    <property key='ActionName'>XXX</property><property key='RequestId'>800000af-0006-ff00-b63f-84710c7967bb</property>
    <property key='RequestPath'>/api/Log/Error</property>
    <property key='SpanId'>|e3e67f8e-439060175495324e.</property>
    <property key='TraceId'>e3e67f8e-439060175495324e</property>
    <property key='ParentId'></property>
    <property key='ExceptionDetail'>
        <dictionary>
        <item key='HResult'>-2146233088</item>
        <item key='Message'> XXXXXXX </item>
        <item key='Source'></item>
        <item key='Type'>XXX.WebApi.ApplicationLogic.MyCustomException</item>
        </dictionary>
    </property>
</properties>

Мне нужен текстовый столбец ExceptionType с "XXX.WebApi.ApplicationLogic.MyCustomException".

В документации для Serilog.mssql: https://github.com/serilog/serilog-sinks-mssqlserver объясняется, что можно сопоставить свойства контекста. если я сделаю карту для

            new SqlColumn
                {ColumnName = "ExceptionType", PropertyName = "ExceptionDetail", DataType = SqlDbType.NVarChar, DataLength = -1, AllowNull = true },

это работает.. но у меня есть все пункты диктатуры.

Мое сопоставление неверно, потому что "Тип" является элементом словаря свойства "ExceptionDetail". Я везде искал пример или документацию.

Спасибо

0 ответов

Другие вопросы по тегам