Last active
March 11, 2024 12:05
-
-
Save teyc/b07e0c64ca29474f3d593bee5abeb2f3 to your computer and use it in GitHub Desktop.
Enterprise Log Lib Serilog Listener
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [ConfigurationElementType(typeof(CustomTraceListenerData))] | |
| public class SerilogTraceListener: CustomTraceListener | |
| { | |
| public override void Write(string message) | |
| { | |
| } | |
| public override void WriteLine(string message) | |
| { | |
| } | |
| public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data) | |
| { | |
| if (data is LogEntry logEntry) | |
| { | |
| var logLevel = GetLogLevel(logEntry.Severity); | |
| var logger = Log.Logger; | |
| foreach (var extendedProperty in logEntry.ExtendedProperties) | |
| { | |
| logger = logger.ForContext(extendedProperty.Key, extendedProperty.Value); | |
| } | |
| var exception = string.IsNullOrWhiteSpace(logEntry.ErrorMessages) | |
| ? null | |
| : new Exception(logEntry.ErrorMessages); | |
| logger.Write(logLevel, exception, logEntry.Message); | |
| return; | |
| } | |
| base.TraceData(eventCache, source, eventType, id, data); | |
| } | |
| private LogEventLevel GetLogLevel(TraceEventType severity) | |
| { | |
| switch (severity) | |
| { | |
| case TraceEventType.Critical: | |
| return LogEventLevel.Fatal; | |
| case TraceEventType.Error: | |
| return LogEventLevel.Error; | |
| case TraceEventType.Warning: | |
| return LogEventLevel.Warning; | |
| case TraceEventType.Information: | |
| return LogEventLevel.Information; | |
| case TraceEventType.Verbose: | |
| return LogEventLevel.Debug; | |
| case TraceEventType.Start: | |
| return LogEventLevel.Information; | |
| case TraceEventType.Stop: | |
| return LogEventLevel.Information; | |
| case TraceEventType.Suspend: | |
| return LogEventLevel.Information; | |
| case TraceEventType.Resume: | |
| return LogEventLevel.Information; | |
| case TraceEventType.Transfer: | |
| return LogEventLevel.Information; | |
| default: | |
| throw new ArgumentOutOfRangeException(nameof(severity), severity, null); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <configuration> | |
| <configSections> | |
| <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> | |
| </configSections> | |
| <loggingConfiguration name="Logging" tracingEnabled="false" defaultCategory="General"> | |
| <listeners> | |
| <add name="Serilog Trace Listener" type="AllianzGlobalAssistAU.Roadside.WebSite.Bmw.Helper.SerilogTraceListener, AllianzGlobalAssistAU.Roadside.WebSite.Bmw" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging" /> | |
| </listeners> | |
| <categorySources> | |
| <add switchValue="All" name="General"> | |
| <listeners> | |
| <add name="Serilog Trace Listener" /> | |
| </listeners> | |
| </add> | |
| </loggingConfiguration> | |
| </configuration> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment