Beispiel #1
0
        internal static LogEntry SetTraceAndSpanIfAny(
            this LogEntry entry, TraceTarget traceTarget,
            IServiceProvider serviceProvider, Action <IServiceProvider, LogEntry, TraceTarget> obsoleteTraceContextGetter)
        {
            GaxPreconditions.CheckNotNull(entry, nameof(entry));

            if (traceTarget is null)
            {
                return(entry);
            }

            // If there's currently a Google trace and span use that one.
            // This means that the Google Trace component of the diagnostics library
            // has been initialized.
            // Else attempt to use an external trace context.
            var context = ContextTracerManager.GetCurrentTraceContext() ?? serviceProvider.SafeGetTraceContext();

            if (context is ITraceContext && context.TraceId is string)
            {
                entry.Trace        = traceTarget.GetFullTraceName(context.TraceId);
                entry.TraceSampled = context.ShouldTrace ?? false;
                entry.SpanId       = SpanIdToHex(context.SpanId);
            }
            else
            {
                obsoleteTraceContextGetter?.Invoke(serviceProvider, entry, traceTarget);
            }

            return(entry);
Beispiel #2
0
        internal ErrorReportingContextExceptionLogger(
            IConsumer <LogEntry> consumer, EventTarget eventTarget, Struct serviceContext, ErrorReportingOptions options, IServiceProvider serviceProvider)
        {
            GaxPreconditions.CheckNotNull(eventTarget, nameof(eventTarget));
            _consumer       = GaxPreconditions.CheckNotNull(consumer, nameof(consumer));
            _options        = GaxPreconditions.CheckNotNull(options, nameof(options));
            _serviceContext = GaxPreconditions.CheckNotNull(serviceContext, nameof(serviceContext));

            _logName     = eventTarget.LogTarget.GetFullLogName(options.LogName);
            _traceTarget = eventTarget.LogTarget.Kind == LogTargetKind.Project ? TraceTarget.ForProject(eventTarget.ProjectId) : null;

            _serviceProvider = serviceProvider;
        }
        internal ErrorReportingContextExceptionLogger(
            IConsumer <LogEntry> consumer, string serviceName, string version, ErrorReportingOptions options, IServiceProvider serviceProvider)
        {
            _consumer = GaxPreconditions.CheckNotNull(consumer, nameof(consumer));
            _options  = GaxPreconditions.CheckNotNull(options, nameof(options));
            var eventTarget = options.EventTarget;

            GaxPreconditions.CheckState(eventTarget.Kind == EventTargetKind.Logging, $"Invalid {nameof(EventTarget)}");
            _logName     = GaxPreconditions.CheckNotNull(eventTarget.LogTarget, nameof(eventTarget.LogTarget)).GetFullLogName(eventTarget.LogName);
            _traceTarget = _traceTarget = eventTarget.LogTarget.Kind == LogTargetKind.Project ?
                                          TraceTarget.ForProject(eventTarget.LogTarget.ProjectId) : null;

            _serviceContext = CreateServiceContext(serviceName, version) ?? new Struct();

            _serviceProvider = serviceProvider;
        }
Beispiel #4
0
 internal GoogleLogger(IConsumer <LogEntry> consumer, LogTarget logTarget, LoggerOptions loggerOptions, string logName,
                       Action <IServiceProvider, Dictionary <string, string> > obsoleteLabelsGetter,
                       Action <IServiceProvider, LogEntry, TraceTarget> obsoleteTraceContextGetter,
                       IClock clock = null, IServiceProvider serviceProvider = null)
 {
     _logTarget   = GaxPreconditions.CheckNotNull(logTarget, nameof(logTarget));
     _traceTarget = logTarget.Kind == LogTargetKind.Project ?
                    TraceTarget.ForProject(logTarget.ProjectId) : null;
     _consumer                   = GaxPreconditions.CheckNotNull(consumer, nameof(consumer));
     _loggerOptions              = GaxPreconditions.CheckNotNull(loggerOptions, nameof(loggerOptions));
     _logName                    = GaxPreconditions.CheckNotNullOrEmpty(logName, nameof(logName));
     _fullLogName                = logTarget.GetFullLogName(_loggerOptions.LogName);
     _serviceProvider            = serviceProvider;
     _clock                      = clock ?? SystemClock.Instance;
     _obsoleteTraceContextGetter = obsoleteTraceContextGetter;
     _ambientScopeManager        = new AmbientScopeManager(_loggerOptions, _serviceProvider, obsoleteLabelsGetter);
 }