diff --git a/DotBased.Logging.Serilog/BasedSerilog.cs b/DotBased.Logging.Serilog/BasedSerilog.cs
new file mode 100644
index 0000000..7586298
--- /dev/null
+++ b/DotBased.Logging.Serilog/BasedSerilog.cs
@@ -0,0 +1,27 @@
+using Serilog;
+
+namespace DotBased.Logging.Serilog;
+
+public static class BasedSerilog
+{
+ ///
+ /// Default output template with the extra properties that can be used for serilog sinks.
+ ///
+ public const string OutputTemplate = "[{Timestamp:HH:mm:ss} - {Caller}->{Assembly}] | {Level:u3}] {Message:lj}{NewLine}{Exception}";
+
+ public static LoggerConfiguration UseBasedExtension(this LoggerConfiguration loggerConfiguration)
+ {
+ loggerConfiguration.Enrich.FromLogContext().Enrich.With(new BasedSerilogEnricher());
+ return loggerConfiguration;
+ }
+
+ ///
+ /// The extra properties this implementation adds to serilog
+ ///
+ public static class ExtraProperties
+ {
+ public const string AssemblyProp = "Assembly";
+ public const string SourceProp = "Source";
+ public const string CallerProp = "Caller";
+ }
+}
\ No newline at end of file
diff --git a/DotBased.Logging.Serilog/SerilogAdapter.cs b/DotBased.Logging.Serilog/BasedSerilogAdapter.cs
similarity index 79%
rename from DotBased.Logging.Serilog/SerilogAdapter.cs
rename to DotBased.Logging.Serilog/BasedSerilogAdapter.cs
index b79a882..7d2e3e1 100755
--- a/DotBased.Logging.Serilog/SerilogAdapter.cs
+++ b/DotBased.Logging.Serilog/BasedSerilogAdapter.cs
@@ -7,27 +7,18 @@ using Serilog.Parsing;
namespace DotBased.Logging.Serilog;
-public class SerilogAdapter : LogAdapterBase
+public class BasedSerilogAdapter(global::Serilog.ILogger serilogLogger) : LogAdapterBase("Serilog adapter")
{
- public SerilogAdapter(global::Serilog.ILogger serilogLogger) : base("Serilog adapter")
- {
- _serilogLogger = serilogLogger;
- _messageTemplateParser = new MessageTemplateParser();
- }
-
- public const string SampleTemplate = "[{Timestamp:HH:mm:ss} - {Caller}] | {Level:u3}] {Message:lj}{NewLine}{Exception}";
-
- private readonly global::Serilog.ILogger _serilogLogger;
- private readonly MessageTemplateParser _messageTemplateParser;
+ private readonly MessageTemplateParser _messageTemplateParser = new();
public override void HandleLog(object? processor, LogCapsule? capsule)
{
if (capsule == null)
return;
- var logger = _serilogLogger
- .ForContext("Assembly", capsule.Logger.Caller.AssemblyName)
- .ForContext("Source", capsule.Logger.Caller.Source)
- .ForContext("Caller", capsule.Logger.Caller.Name);
+ var logger = serilogLogger
+ .ForContext(BasedSerilog.ExtraProperties.AssemblyProp, capsule.Logger.Caller.AssemblyName)
+ .ForContext(BasedSerilog.ExtraProperties.SourceProp, capsule.Logger.Caller.Source)
+ .ForContext(BasedSerilog.ExtraProperties.CallerProp, capsule.Logger.Caller.Name);
var template = _messageTemplateParser.Parse(capsule.Message);
IEnumerable? properties = null;
diff --git a/DotBased.Logging.Serilog/BasedSerilogEnricher.cs b/DotBased.Logging.Serilog/BasedSerilogEnricher.cs
new file mode 100644
index 0000000..c6dcd15
--- /dev/null
+++ b/DotBased.Logging.Serilog/BasedSerilogEnricher.cs
@@ -0,0 +1,25 @@
+using Serilog.Core;
+using Serilog.Events;
+
+namespace DotBased.Logging.Serilog;
+
+public class BasedSerilogEnricher : ILogEventEnricher
+{
+ public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
+ {
+ var asmPropValue = "ASM";
+ var sourcePropValue = "Unknown";
+ if (logEvent.Properties.TryGetValue("SourceContext", out var sourceContextValue))
+ asmPropValue = sourceContextValue.ToString().Replace("\"", "");
+ if (logEvent.Properties.TryGetValue("Application", out var appValue))
+ sourcePropValue = appValue.ToString().Replace("\"", "");
+
+ var assemblyProperty = propertyFactory.CreateProperty(BasedSerilog.ExtraProperties.AssemblyProp, asmPropValue);
+ var sourceProperty = propertyFactory.CreateProperty(BasedSerilog.ExtraProperties.SourceProp, sourcePropValue);
+ var callerProperty = propertyFactory.CreateProperty(BasedSerilog.ExtraProperties.CallerProp, sourcePropValue);
+
+ logEvent.AddPropertyIfAbsent(assemblyProperty);
+ logEvent.AddPropertyIfAbsent(sourceProperty);
+ logEvent.AddPropertyIfAbsent(callerProperty);
+ }
+}
\ No newline at end of file