Serilog.Sinks.PeriodicBatching 5.0.0-dev-00855

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.

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
Serilog.Sinks.Elasticsearch
Package Description
56
Serilog.Sinks.Elasticsearch
Package Description
59
Serilog.Sinks.Elasticsearch
Package Description
60
Serilog.Sinks.Elasticsearch
Package Description
63
Serilog.Sinks.Elasticsearch
Package Description
65
Serilog.Sinks.Elasticsearch
Package Description
74
Serilog.Sinks.Elasticsearch
Package Description
77
Serilog.Sinks.Elasticsearch
Package Description
79
Serilog.Sinks.Elasticsearch
Package Description
80
Serilog.Sinks.Elasticsearch
Package Description
90
Serilog.Sinks.Elasticsearch
Package Description
114
Serilog.Sinks.Elasticsearch
Package Description
1,919
Serilog.Sinks.Elasticsearch
Package Description
3,230
Serilog.Sinks.Elasticsearch
Package Description
25,438
Serilog.Sinks.Elasticsearch
Serilog sink for Elasticsearch
58
Serilog.Sinks.Elasticsearch
Serilog sink for Elasticsearch
62
Serilog.Sinks.Elasticsearch
Serilog.Sinks.Elasticsearch
96
Serilog.Sinks.Elasticsearch
The perfect way for .NET apps to write structured log events to Elasticsearch 2.x.
61

.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 18 07/04/2024
5.0.0 12 06/07/2024
5.0.0-dev-00855 10 06/08/2024
4.1.2-dev-00851 13 06/01/2024
4.1.1 11 05/31/2024
4.1.1-dev-00845 18 05/24/2024
4.1.0 13 05/21/2024
4.1.0-dev-00840 15 05/21/2024
4.0.2-dev-00838 15 05/21/2024
4.0.1 10 03/15/2024
4.0.1-dev-00832 14 03/16/2024
4.0.0 12 03/07/2024
4.0.0-dev-00824 12 03/10/2024
4.0.0-dev-00821 11 03/10/2024
3.1.1-dev-00804 33 06/23/2023
3.1.1-dev-00801 43 10/27/2022
3.1.0 71 10/27/2022
3.1.0-dev-00796 35 09/23/2022
3.0.0 62 09/22/2022
3.0.0-dev-00792 47 09/24/2022
2.3.1 43 07/11/2022
2.3.1-dev-00785 46 09/12/2022
2.3.1-dev-00780 54 09/12/2022
2.3.1-dev-00776 34 09/12/2022
2.3.1-dev-00774 40 09/21/2022
2.3.0 61 07/29/2022
2.3.0-dev-00765 29 09/12/2022
2.3.0-dev-00762 48 06/30/2022
2.3.0-dev-00760 41 09/23/2022
2.2.1-dev-00758 67 09/21/2022
2.2.1-dev-00755 100 09/12/2022
2.2.0 38 09/12/2022
2.2.0-dev-00748 52 09/22/2022
2.2.0-dev-00740 41 09/12/2022
2.1.1 25,945 06/27/2022
2.1.1-dev-00732 34 09/17/2022
2.1.1-dev-00729 52 09/21/2022
2.1.1-dev-00725 38 09/12/2022
2.1.0 32 09/17/2022
2.1.0-dev-00720 29 09/12/2022
2.0.2-dev-00719 31 09/22/2022
2.0.1 29 09/12/2022
2.0.1-dev-00714 42 09/12/2022
2.0.0 81 09/25/2022
2.0.0-rc-707 22 09/12/2022
2.0.0-rc-705 27 10/27/2022
2.0.0-beta-702 37 09/12/2022
2.0.0-beta-700 50 09/12/2022
2.0.0-beta-519 47 09/17/2022
2.0.0-beta-516 34 09/12/2022
2.0.0-beta-513 71 09/12/2022
2.0.0-beta-511 54 09/12/2022
2.0.0-beta-509 54 09/12/2022
2.0.0-beta-507 118 09/12/2022
2.0.0-beta-505 90 09/12/2022
2.0.0-beta-502 22 09/24/2022
2.0.0-beta-499 53 09/12/2022
2.0.0-beta-495 66 09/12/2022
2.0.0-beta-494 49 07/03/2022
2.0.0-beta-493 75 09/22/2022
2.0.0-beta-487 72 09/12/2022
2.0.0-beta-486 58 09/12/2022
2.0.0-beta-479 52 09/22/2022
2.0.0-beta-478 44 09/12/2022
2.0.0-beta-465 39 09/12/2022