Skip to content

Providers info

Matteo Gregoricchio edited this page May 7, 2024 · 16 revisions

Note: please check Samples and Tests in the repository for additional examples on all configuration options.

Additional columns

They can be configured for the following providers:

  • MsSqlServerProvider
  • MySqlProvider (MariaDB sink only)
  • PostgreSqlProvider

MongoDb exposes additional columns in the Properties info. RavenDb sink don't expose a way to customize columns.

Steps to configure additional columns

Create a custom LogModel class that inherits from the Provider Log Model (you can find each model down below, as a constraint on the provider extension methods that accept a generic parameter).

To remove default properties
Currently the columns that can be removed are the Exception and the Properties fields. To remove them, override the desired property/ies in the custom LogModel and apply it/them the Serilog.Ui.Core.Attributes.RemovedColumn attribute.

** To add properties**
Register any property on the custom LogModel. Currently, the UI offers a specific render for the following property types:

  • bool
  • DateTime
  • Code type (JSON, XML)
  • string (default rendering)

To register a code-type column, add the _Serilog.Ui.Core.AttributesCodeColumn(codeType: CodeType)_ attribute on the property, specifying the type of code to parse (you can choose between JSON and XML).

** Register the provider using the extension method, providing as T your custom LogModel. **

That's it, your additional columns are configured for view in the client app!

Note: the Samples.WebApi project offers a real example on adding additional columns.

Providers configuration

// namespace Serilog.Ui.ElasticSearchProvider.Extensions
ISerilogUiOptionsBuilder UseElasticSearchDb(this ISerilogUiOptionsBuilder optionsBuilder, Action<ElasticSearchDbOptions> setupOptions);

// namespace Serilog.Ui.MongoDbProvider.Extensions
ISerilogUiOptionsBuilder UseMongoDb(this ISerilogUiOptionsBuilder optionsBuilder, Action<MongoDbOptions> setupOptions);

// namespace Serilog.Ui.MsSqlServerProvider.Extensions
ISerilogUiOptionsBuilder UseSqlServer(this ISerilogUiOptionsBuilder optionsBuilder,
  Action<RelationalDbOptions> setupOptions,
  Func<string, DateTime>? = null)

ISerilogUiOptionsBuilder UseSqlServer<T>(this ISerilogUiOptionsBuilder optionsBuilder,
  Action<RelationalDbOptions> setupOptions,
  Func<string, DateTime>? = null) where T : SqlServerLogModel

// namespace Serilog.Ui.MySqlProvider.Extensions
/* using Serilog.Sinks.MySQL */
ISerilogUiOptionsBuilder UseMySqlServer(this ISerilogUiOptionsBuilder optionsBuilder, Action<RelationalDbOptions> setupOptions);

/* using Serilog.Sinks.MariaDB */
ISerilogUiOptionsBuilder UseMariaDbServer(this ISerilogUiOptionsBuilder optionsBuilder, Action<RelationalDbOptions> setupOptions);
ISerilogUiOptionsBuilder UseMariaDbServer<T>(this ISerilogUiOptionsBuilder optionsBuilder, Action<RelationalDbOptions> setupOptions) where T : MySqlLogModel;

// namespace Serilog.Ui.PostgreSqlProvider.Extensions
ISerilogUiOptionsBuilder UseNpgSql(this ISerilogUiOptionsBuilder optionsBuilder, Action<PostgreSqlDbOptions> setupOptions);
ISerilogUiOptionsBuilder UseNpgSql(this ISerilogUiOptionsBuilder optionsBuilder, Action<PostgreSqlDbOptions> setupOptions) where T : PostgresLogModel;

// namespace Serilog.Ui.RavenDbProvider.Extensions;
ISerilogUiOptionsBuilder UseRavenDb(this ISerilogUiOptionsBuilder optionsBuilder, Action<RavenDbOptions> setupOptions);
Clone this wiki locally