diff --git a/examples/Demo/Demo.csproj b/examples/Demo/Demo.csproj
index 86d54363..7121aef5 100644
--- a/examples/Demo/Demo.csproj
+++ b/examples/Demo/Demo.csproj
@@ -58,6 +58,7 @@
+
diff --git a/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs b/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs
new file mode 100644
index 00000000..ae1bb141
--- /dev/null
+++ b/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs
@@ -0,0 +1,34 @@
+using NBomber.CSharp;
+using Serilog;
+using Serilog.Sinks.Grafana.Loki;
+
+namespace Demo.Features.SerilogGrafanaLokiLogger;
+
+public class SerilogGrafanaLokiExample
+{
+ public void Run()
+ {
+ var scenario = Scenario.Create("hello_world_scenario", async context =>
+ {
+ await Task.Delay(1000);
+
+ context.Logger.Information("my log message: {0}", context.InvocationNumber);
+
+ return Response.Ok();
+ })
+ .WithoutWarmUp()
+ .WithLoadSimulations(
+ Simulation.KeepConstant(copies: 1, during: TimeSpan.FromSeconds(30))
+ );
+
+ NBomberRunner
+ .RegisterScenarios(scenario)
+ .WithLoggerConfig(() =>
+ new LoggerConfiguration()
+ .MinimumLevel.Debug()
+ .WriteTo.GrafanaLoki("http://localhost:3100",
+ new [] {new LokiLabel {Key = "application", Value = "NBomber"}})
+ )
+ .Run();
+ }
+}
diff --git a/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml b/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml
new file mode 100644
index 00000000..f8192632
--- /dev/null
+++ b/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml
@@ -0,0 +1,13 @@
+version: "3"
+
+services:
+ loki:
+ image: grafana/loki:master
+ ports:
+ - 3100:3100
+ command: -config.file=/etc/loki/local-config.yaml
+
+ grafana:
+ image: grafana/grafana:master
+ ports:
+ - "3000:3000"
diff --git a/examples/Demo/Program.cs b/examples/Demo/Program.cs
index 0228665d..103a779f 100644
--- a/examples/Demo/Program.cs
+++ b/examples/Demo/Program.cs
@@ -11,6 +11,7 @@
using Demo.Features.ElasticsearchLogger;
using Demo.Features.RealtimeReporting.CustomReportingSink;
using Demo.Features.RealtimeReporting.InfluxDB;
+using Demo.Features.SerilogGrafanaLokiLogger;
using Demo.Features.Timeouts;
using Demo.HelloWorld;
using Demo.HelloWorld.LoadSimulation;
@@ -24,7 +25,7 @@
// -------------------------------
// ----- Hello World examples -----
// -------------------------------
-new HelloWorldExample().Run();
+//new HelloWorldExample().Run();
// new ScenarioWithInit().Run();
// new ScenarioWithSteps().Run();
// new StepsShareData().Run();
@@ -60,6 +61,7 @@
// ---- Logs ----
// new ElasticsearchExample().Run();
+new SerilogGrafanaLokiExample().Run();
// ---- Timeouts ----
// new ScenarioCompletionTimeout().Run();