public TraceIdentifiersEnricher(TraceIdentifiersContext context, LogContextBuilder builder) { Context = context ?? throw new ArgumentNullException(nameof(context)); Builder = builder ?? throw new ArgumentNullException(nameof(builder)); this.UpdateEnrichers(); this.Context.OnChildCreated += ContextOnChildCreated; }
public static LogContextBuilder WithRemoteAndLocalIdentifiers(this LogContextBuilder builder, string name = "correlationAll") { builder.Factories.Add(c => new PropertyEnricher(name, c.Local.Reverse().Concat(RemoteAllEscaped(builder, c)).ToArray())); return(builder); }
private static void LinkEnrichersToContext(TraceIdentifiersContext context, LogContextBuilder builder) { TraceIdentifiersEnricher traceIdentifiersEnricher = new TraceIdentifiersEnricher(context, builder); IDisposable disposable = LogContext.Push(traceIdentifiersEnricher); context.Link(disposable); }
public static LogContextBuilder WithRemoteIdentifier(this LogContextBuilder builder, string name = "correlationRemote") { builder.Factories.Add(c => { return(c.Remote == null ? null : new PropertyEnricher(name, c.Remote)); }); return(builder); }
private static IEnumerable <string> RemoteAllEscaped(LogContextBuilder builder, TraceIdentifiersContext c) { IEnumerable <string> remoteShared = c.Remote; if (builder.EscapeRemote) { remoteShared = remoteShared.Select(SecurityElement.Escape); } return(remoteShared); }
public static LogContextBuilder WithRemoteIdentifiers(this LogContextBuilder builder, string name = "correlationRemoteAll") { builder.Factories.Add(c => { IEnumerable <string> remoteShared = RemoteAllEscaped(builder, c); return(new PropertyEnricher(name, remoteShared.ToArray())); }); return(builder); }
public static TraceIdentifiersContext LinkToSerilogLogContext( this TraceIdentifiersContext traceIdentifiersContext, Action <LogContextBuilder> settings = null) { LogContextBuilder builder = new LogContextBuilder(); settings?.Invoke(builder); LinkEnrichersToContext(traceIdentifiersContext, builder); traceIdentifiersContext.OnChildCreated += (sender, args) => { TraceIdentifiersContext context = (TraceIdentifiersContext)sender; LinkEnrichersToContext(context, builder); }; return(traceIdentifiersContext); }
private static void LinkEnrichersToContext(TraceIdentifiersContext context, LogContextBuilder builder) { ILogEventEnricher[] enrichers = builder.Factories.Select( func => { try { return(func(context)); } catch { return(null); } }).Where(e => e != null).ToArray(); if (enrichers.Any()) { IDisposable disposable = LogContext.Push(enrichers); context.Link(disposable); } }
public static TraceIdentifiersContext LinkToSerilogLogContext( this TraceIdentifiersContext context, Action <LogContextBuilder> settings = null) { LogContextBuilder builder = new LogContextBuilder(); if (settings != null) { settings.Invoke(builder); } else { builder.WithDefaults(); } LinkEnrichersToContext(context, builder); context.OnClonedForThread += (sender, args) => { TraceIdentifiersContext newContext = (TraceIdentifiersContext)sender; LinkEnrichersToContext(newContext, builder); }; return(context); }
public static LogContextBuilder WithDefaults(this LogContextBuilder builder) { return(builder.WithStartup().WithLocalIdentifier().WithRemoteIdentifier().WithRemoteAndLocalIdentifiers()); }
public static LogContextBuilder WithLocalIdentifier(this LogContextBuilder builder, string name = "correlationLocal") { builder.Factories.Add(c => new PropertyEnricher(name, c.Local.FirstOrDefault())); return(builder); }
public static LogContextBuilder WithRemoteIdentifiers(this LogContextBuilder builder, string name = "correlationRemoteAll") { builder.Factories.Add(c => new PropertyEnricher(name, c.RemoteShared.ToArray())); return(builder); }
public static LogContextBuilder WithLocalIdentifiers(this LogContextBuilder builder, string name = "correlationLocalAll") { builder.Factories.Add(c => new PropertyEnricher(name, c.Local.Reverse().ToArray())); return(builder); }
public static LogContextBuilder WithStartup(this LogContextBuilder builder, string name = "correlationStartup") { builder.Factories.Add(c => new PropertyEnricher(name, TraceIdentifiersContext.StartupId)); return(builder); }