diff --git a/src/Elastic.Serilog.Sinks/ElasticsearchSink.cs b/src/Elastic.Serilog.Sinks/ElasticsearchSink.cs
index 244d49ee..1b99127b 100644
--- a/src/Elastic.Serilog.Sinks/ElasticsearchSink.cs
+++ b/src/Elastic.Serilog.Sinks/ElasticsearchSink.cs
@@ -67,6 +67,20 @@ public ElasticsearchSinkOptions() : this(new DefaultHttpTransport(TransportHelpe
///
public string? IlmPolicy { get; set; }
+ ///
+ /// Provide an explicit minimum for the Elasticsearch sink.
+ /// This allows you to separately configure the sink to filter out messages.
+ /// E.g: Configure default logging at but only write
+ /// to Elasticsearch
+ ///
+ public LogEventLevel? MinimumLevel { get; set; }
+
+ ///
+ /// A switch allowing the pass-through minimum level to be changed at runtime.
+ /// Takes precedence over if both are configured
+ ///
+ public LoggingLevelSwitch? LevelSwitch { get; set; }
+
}
///
diff --git a/src/Elastic.Serilog.Sinks/ElasticsearchSinkExtensions.cs b/src/Elastic.Serilog.Sinks/ElasticsearchSinkExtensions.cs
index e1cb738c..3276caef 100644
--- a/src/Elastic.Serilog.Sinks/ElasticsearchSinkExtensions.cs
+++ b/src/Elastic.Serilog.Sinks/ElasticsearchSinkExtensions.cs
@@ -4,6 +4,8 @@
using Elastic.Transport;
using Serilog;
using Serilog.Configuration;
+using Serilog.Core;
+using Serilog.Events;
namespace Elastic.Serilog.Sinks
{
@@ -17,7 +19,11 @@ public static class ElasticsearchSinkExtensions
/// Use configure where and how data should be written
///
public static LoggerConfiguration Elasticsearch(this LoggerSinkConfiguration loggerConfiguration, ElasticsearchSinkOptions? options = null) =>
- loggerConfiguration.Sink(new ElasticsearchSink(options ?? new ElasticsearchSinkOptions()));
+ loggerConfiguration.Sink(
+ new ElasticsearchSink(options ?? new ElasticsearchSinkOptions())
+ , restrictedToMinimumLevel: options?.MinimumLevel ?? LevelAlias.Minimum
+ , levelSwitch: options?.LevelSwitch
+ );
///
/// Write logs directly to Elasticsearch.
@@ -26,7 +32,11 @@ public static LoggerConfiguration Elasticsearch(this LoggerSinkConfiguration log
///
public static LoggerConfiguration Elasticsearch(this LoggerSinkConfiguration loggerConfiguration, ElasticsearchSinkOptions? options = null)
where TEcsDocument : EcsDocument, new() =>
- loggerConfiguration.Sink(new ElasticsearchSink(options ?? new ElasticsearchSinkOptions()));
+ loggerConfiguration.Sink(
+ new ElasticsearchSink(options ?? new ElasticsearchSinkOptions())
+ , restrictedToMinimumLevel: options?.MinimumLevel ?? LevelAlias.Minimum
+ , levelSwitch: options?.LevelSwitch
+ );
///
/// Write logs directly to Elasticsearch.
@@ -38,15 +48,18 @@ public static LoggerConfiguration Elasticsearch(
ICollection nodes,
Action? configureOptions = null,
Action? configureTransport = null,
- bool useSniffing = true
+ bool useSniffing = true,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
)
{
var transportConfig = useSniffing ? TransportHelper.Static(nodes) : TransportHelper.Sniffing(nodes);
configureTransport?.Invoke(transportConfig);
+
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
///
@@ -60,7 +73,9 @@ public static LoggerConfiguration Elasticsearch(
ICollection nodes,
Action>? configureOptions = null,
Action? configureTransport = null,
- bool useSniffing = true
+ bool useSniffing = true,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
) where TEcsDocument : EcsDocument, new()
{
var transportConfig = useSniffing ? TransportHelper.Static(nodes) : TransportHelper.Sniffing(nodes);
@@ -68,7 +83,7 @@ public static LoggerConfiguration Elasticsearch(
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
///
@@ -82,7 +97,9 @@ public static LoggerConfiguration ElasticCloud(
string cloudId,
string apiKey,
Action? configureOptions = null,
- Action? configureTransport = null
+ Action? configureTransport = null,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
)
{
var transportConfig = TransportHelper.Cloud(cloudId, apiKey);
@@ -90,7 +107,7 @@ public static LoggerConfiguration ElasticCloud(
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
///
@@ -105,7 +122,9 @@ public static LoggerConfiguration ElasticCloud(
string cloudId,
string apiKey,
Action>? configureOptions = null,
- Action? configureTransport = null
+ Action? configureTransport = null,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
) where TEcsDocument : EcsDocument, new()
{
var transportConfig = TransportHelper.Cloud(cloudId, apiKey);
@@ -113,7 +132,7 @@ public static LoggerConfiguration ElasticCloud(
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
///
@@ -128,7 +147,9 @@ public static LoggerConfiguration ElasticCloud(
string username,
string password,
Action? configureOptions = null,
- Action? configureTransport = null
+ Action? configureTransport = null,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
)
{
var transportConfig = TransportHelper.Cloud(cloudId, username, password);
@@ -136,7 +157,7 @@ public static LoggerConfiguration ElasticCloud(
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
///
@@ -152,7 +173,9 @@ public static LoggerConfiguration ElasticCloud(
string username,
string password,
Action>? configureOptions = null,
- Action? configureTransport = null
+ Action? configureTransport = null,
+ LoggingLevelSwitch? levelSwitch = null,
+ LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum
) where TEcsDocument : EcsDocument, new()
{
var transportConfig = TransportHelper.Cloud(cloudId, username, password);
@@ -160,7 +183,7 @@ public static LoggerConfiguration ElasticCloud(
var sinkOptions = new ElasticsearchSinkOptions(new DefaultHttpTransport(transportConfig));
configureOptions?.Invoke(sinkOptions);
- return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions));
+ return loggerConfiguration.Sink(new ElasticsearchSink(sinkOptions), restrictedToMinimumLevel, levelSwitch);
}
}
}