diff --git a/Akka.Logger.Serilog.sln b/Akka.Logger.Serilog.sln
index acaf957..bf287c7 100644
--- a/Akka.Logger.Serilog.sln
+++ b/Akka.Logger.Serilog.sln
@@ -17,6 +17,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{489D8D37
build.sh = build.sh
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{28CDBE4C-053C-4CD4-B5D2-4DF529922916}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akka.Hosting.LoggingDemo", "src\Examples\Akka.Hosting.LoggingDemo\Akka.Hosting.LoggingDemo.csproj", "{1E83DF8F-408B-48DB-8896-B81AD742E7BB}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -35,6 +39,10 @@ Global
{CAE7CA7C-0D0C-4FDA-BDE9-BE16A27343EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CAE7CA7C-0D0C-4FDA-BDE9-BE16A27343EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CAE7CA7C-0D0C-4FDA-BDE9-BE16A27343EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1E83DF8F-408B-48DB-8896-B81AD742E7BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1E83DF8F-408B-48DB-8896-B81AD742E7BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1E83DF8F-408B-48DB-8896-B81AD742E7BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1E83DF8F-408B-48DB-8896-B81AD742E7BB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -42,4 +50,7 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6F6A6366-6F90-4FC6-8E46-861B3CB6C12B}
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {1E83DF8F-408B-48DB-8896-B81AD742E7BB} = {28CDBE4C-053C-4CD4-B5D2-4DF529922916}
+ EndGlobalSection
EndGlobal
diff --git a/src/Examples/Akka.Hosting.LoggingDemo/Akka.Hosting.LoggingDemo.csproj b/src/Examples/Akka.Hosting.LoggingDemo/Akka.Hosting.LoggingDemo.csproj
new file mode 100644
index 0000000..f221c78
--- /dev/null
+++ b/src/Examples/Akka.Hosting.LoggingDemo/Akka.Hosting.LoggingDemo.csproj
@@ -0,0 +1,18 @@
+
+
+ net6.0
+ enable
+ enable
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Examples/Akka.Hosting.LoggingDemo/Echo.cs b/src/Examples/Akka.Hosting.LoggingDemo/Echo.cs
new file mode 100644
index 0000000..9065b98
--- /dev/null
+++ b/src/Examples/Akka.Hosting.LoggingDemo/Echo.cs
@@ -0,0 +1,3 @@
+namespace Akka.Hosting.LoggingDemo;
+
+public struct Echo{}
\ No newline at end of file
diff --git a/src/Examples/Akka.Hosting.LoggingDemo/Program.cs b/src/Examples/Akka.Hosting.LoggingDemo/Program.cs
new file mode 100644
index 0000000..375bfdb
--- /dev/null
+++ b/src/Examples/Akka.Hosting.LoggingDemo/Program.cs
@@ -0,0 +1,72 @@
+using Akka.Hosting;
+using Akka.Actor;
+using Akka.Actor.Dsl;
+using Akka.Cluster.Hosting;
+using Akka.Event;
+using Akka.Hosting.Logging;
+using Akka.Hosting.LoggingDemo;
+using Akka.Logger.Serilog;
+using Akka.Remote.Hosting;
+using Serilog;
+using Serilog.Core.Enrichers;
+using Serilog.Formatting.Json;
+using LogLevel = Akka.Event.LogLevel;
+
+Serilog.Log.Logger = new LoggerConfiguration()
+ .WriteTo.Console(outputTemplate:"[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}")
+ .WriteTo.File(new JsonFormatter(), "output.json")
+ .MinimumLevel.Debug()
+ .CreateLogger();
+
+var builder = WebApplication.CreateBuilder(args);
+
+builder.Services.AddAkka("MyActorSystem", (configurationBuilder, serviceProvider) =>
+{
+ configurationBuilder
+ .ConfigureLoggers(setup =>
+ {
+ // This sets the minimum log level
+ setup.LogLevel = LogLevel.InfoLevel;
+
+ // Clear all loggers
+ setup.ClearLoggers();
+
+ // Add serilog logger
+ setup.AddLogger();
+ setup.LogMessageFormatter = typeof(SerilogLogMessageFormatter);
+ })
+ .WithRemoting("localhost", 8110)
+ .WithClustering(new ClusterOptions(){ Roles = new[]{ "myRole" },
+ SeedNodes = new[]{ "akka.tcp://MyActorSystem@localhost:8110" }})
+ .WithActors((system, registry) =>
+ {
+ var echo = system.ActorOf(act =>
+ {
+ var counter = 0;
+ act.ReceiveAny((o, context) =>
+ {
+ counter++;
+ context.GetLogger().Info("Actor received {ID}", o, new PropertyEnricher(
+ "custom-property",
+ new
+ {
+ name = "Custom",
+ data = counter
+ }));
+ context.Sender.Tell($"{context.Self} rcv {o}");
+ });
+ }, "echo");
+ registry.TryRegister(echo); // register for DI
+ });
+});
+
+var app = builder.Build();
+
+app.MapGet("/", async (context) =>
+{
+ var echo = context.RequestServices.GetRequiredService().Get();
+ var body = await echo.Ask(context.TraceIdentifier, context.RequestAborted).ConfigureAwait(false);
+ await context.Response.WriteAsync(body);
+});
+
+app.Run();
\ No newline at end of file
diff --git a/src/Examples/Akka.Hosting.LoggingDemo/appsettings.Development.json b/src/Examples/Akka.Hosting.LoggingDemo/appsettings.Development.json
new file mode 100644
index 0000000..8983e0f
--- /dev/null
+++ b/src/Examples/Akka.Hosting.LoggingDemo/appsettings.Development.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/src/Examples/Akka.Hosting.LoggingDemo/appsettings.json b/src/Examples/Akka.Hosting.LoggingDemo/appsettings.json
new file mode 100644
index 0000000..d60ba0d
--- /dev/null
+++ b/src/Examples/Akka.Hosting.LoggingDemo/appsettings.json
@@ -0,0 +1,11 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information",
+ "Akka": "Debug"
+ }
+ },
+ "AllowedHosts": "*"
+}