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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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);
        }