Serilog.Sinks.PeriodicBatching 5.0.1-dev-00860

Serilog.Sinks.PeriodicBatching Build status NuGet Version

A wrapper for Serilog sinks that asynchronously emits events in batches, useful when logging to a slow and/or remote target.

[!IMPORTANT] Serilog 4.x and later versions support batching natively. New projects should use Serilog's IBatchedLogEventSink and WriteTo.Sink(IBatchedLogEventSink), not this package which is now only maintained for compatibility reasons.

Updating for Serilog v4+

First, update your Serilog package reference to the latest published version.

This example is from Serilog.Sinks.Postgresql.Alternative. Old code:

var batchingOptions = new PeriodicBatchingSinkOptions()
{
    BatchSizeLimit = postgresOptions.BatchSizeLimit,
    Period = postgresOptions.Period,
    QueueLimit = postgresOptions.QueueLimit
};

var batchingSink = new PeriodicBatchingSink(new PostgreSqlSink(postgresOptions), batchingOptions);
return sinkConfiguration.Sink(batchingSink, restrictedToMinimumLevel, levelSwitch);

New code:

var batchingOptions = new BatchingOptions()
{
    BatchSizeLimit = postgresOptions.BatchSizeLimit,
    BufferingTimeLimit = postgresOptions.Period,
    QueueLimit = postgresOptions.QueueLimit
};

return sinkConfiguration.Sink(
    new PostgreSqlSink(postgresOptions), batchingOptions, restrictedToMinimumLevel, levelSwitch);

When you're done, don't forget to remove the Serilog.Sinks.PeriodicBatching package dependency.

Getting started

Sinks that, for performance reasons, need to emit events in batches, can be implemented using PeriodicBatchingSink from this package.

First, install the package into your Sink project:

dotnet add package Serilog.Sinks.PeriodicBatching

Then, instead of implementing Serilog's ILogEventSink, implement IBatchedLogEventSink in your sink class:

class ExampleBatchedSink : IBatchedLogEventSink
{
    public async Task EmitBatchAsync(IEnumerable<LogEvent> batch)
    {
        foreach (var logEvent in batch)
            Console.WriteLine(logEvent);
    }
    
    public Task OnEmptyBatchAsync() { }
}

Finally, in your sink's configuration method, construct a PeriodicBatchingSink that wraps your batched sink:

public static class LoggerSinkExampleConfiguration
{
    public static LoggerConfiguration Example(this LoggerSinkConfiguration loggerSinkConfiguration)
    {
        var exampleSink = new ExampleBatchedSink();
        
        var batchingOptions = new PeriodicBatchingSinkOptions
        {
            BatchSizeLimit = 100,
            Period = TimeSpan.FromSeconds(2),
            EagerlyEmitFirstEvent = true,
            QueueLimit = 10000
        };
        
        var batchingSink = new PeriodicBatchingSink(exampleSink, batchingOptions);
        
        return loggerSinkConfiguration.Sink(batchingSink);
    }
}

Showing the top 20 packages that depend on Serilog.Sinks.PeriodicBatching.

Packages Downloads
Microsoft.Extensions.Logging.AzureAppServices
Diagnostics logger for Azure WebApps
58
Microsoft.Extensions.Logging.AzureAppServices
Logger implementation to support Azure App Services 'Diagnostics logs' and 'Log stream' features.
53
Microsoft.Extensions.Logging.AzureAppServices
Logger implementation to support Azure App Services 'Diagnostics logs' and 'Log stream' features.
55
Microsoft.Extensions.Logging.AzureAppServices
Logger implementation to support Azure App Services 'Diagnostics logs' and 'Log stream' features.
58
Microsoft.Extensions.Logging.AzureAppServices
Logger implementation to support Azure App Services 'Diagnostics logs' and 'Log stream' features.
64
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
50
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
51
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
52
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
53
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
56
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server
58
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server and Azure SQL
52
Serilog.Sinks.MSSqlServer
A Serilog sink that writes events to Microsoft SQL Server and Azure SQL
54

.NET Framework 4.6.2

.NET Framework 4.7.1

.NET 6.0

.NET 8.0

.NET Standard 2.0

Version Downloads Last updated
5.0.1-dev-00860 54 11/14/2024
5.0.0 58 11/14/2024
5.0.0-dev-00855 42 11/14/2024
4.1.2-dev-00851 46 12/29/2024
4.1.1 54 11/14/2024
4.1.1-dev-00845 48 11/14/2024
4.1.0 54 11/14/2024
4.1.0-dev-00840 41 11/14/2024
4.0.2-dev-00838 45 11/14/2024
4.0.1 45 11/14/2024
4.0.1-dev-00832 46 11/14/2024
4.0.0 46 11/14/2024
4.0.0-dev-00824 50 11/14/2024
4.0.0-dev-00821 45 11/14/2024
3.1.1-dev-00804 45 11/14/2024
3.1.1-dev-00801 51 11/14/2024
3.1.0 51 07/19/2023
3.1.0-dev-00796 50 11/14/2024
3.0.0 55 11/14/2024
3.0.0-dev-00792 50 11/14/2024
2.3.1 45 12/19/2024
2.3.1-dev-00785 41 11/14/2024
2.3.1-dev-00780 42 11/14/2024
2.3.1-dev-00776 47 11/14/2024
2.3.1-dev-00774 47 11/14/2024
2.3.0 50 12/12/2024
2.3.0-dev-00765 48 11/14/2024
2.3.0-dev-00762 44 11/14/2024
2.3.0-dev-00760 52 11/14/2024
2.2.1-dev-00758 51 12/07/2024
2.2.1-dev-00755 44 11/14/2024
2.2.0 41 11/14/2024
2.2.0-dev-00748 48 11/14/2024
2.2.0-dev-00740 48 11/14/2024
2.1.1 54 12/16/2024
2.1.1-dev-00732 47 12/21/2024
2.1.1-dev-00729 51 12/29/2024
2.1.1-dev-00725 52 11/14/2024
2.1.0 46 11/14/2024
2.1.0-dev-00720 47 11/14/2024
2.0.2-dev-00719 45 11/14/2024
2.0.1 53 11/14/2024
2.0.1-dev-00714 44 12/10/2024
2.0.0 48 12/10/2024
2.0.0-rc-707 50 12/13/2024
2.0.0-rc-705 55 11/14/2024
2.0.0-beta-702 49 11/14/2024
2.0.0-beta-700 42 11/14/2024
2.0.0-beta-519 50 11/14/2024
2.0.0-beta-516 51 11/14/2024
2.0.0-beta-513 53 11/14/2024
2.0.0-beta-511 46 11/14/2024
2.0.0-beta-509 44 11/14/2024
2.0.0-beta-507 49 11/14/2024
2.0.0-beta-505 51 11/14/2024
2.0.0-beta-502 47 11/14/2024
2.0.0-beta-499 44 11/14/2024
2.0.0-beta-495 46 11/14/2024
2.0.0-beta-494 54 12/19/2024
2.0.0-beta-493 39 11/14/2024
2.0.0-beta-487 52 11/14/2024
2.0.0-beta-486 52 11/14/2024
2.0.0-beta-479 48 11/14/2024
2.0.0-beta-478 45 11/14/2024
2.0.0-beta-465 57 11/14/2024