using System.Diagnostics.Tracing; public class MyEventSource : EventSource { private const int LogEventId = 1; [Event(LogEventId, Message = "Log event message", Level = EventLevel.Informational)] public void LogEvent(string message) { if (IsEnabled()) WriteEvent(LogEventId, message); } } // Publishing an event var myEventSource = new MyEventSource(); myEventSource.LogEvent("Event message");
using Serilog; using System.Diagnostics.Tracing; public class MyEventSource : EventSource { private const int LogEventId = 1; [Event(LogEventId, Message = "Log event message", Level = EventLevel.Informational)] public void LogEvent(string message) { if (IsEnabled()) WriteEvent(LogEventId, message); } } // Setting up Serilog logger var logger = new LoggerConfiguration() .WriteTo.EventSourceSink() .CreateLogger(); // Publishing an event using Serilog logger.Information("Serilog event message");Here, we have defined the custom event source class MyEventSource and have set up the Serilog logger configuration to write events to the event source sink. The logger.Information method is used to publish an event with the message "Serilog event message". Package library: The IEventSource interface is a part of the System.Diagnostics.Tracing namespace in .NET. It is available in the System.Diagnostics.DiagnosticSource package.