コード例 #1
0
 private DiagnosticResult(string id, string message, DiagnosticSeverity severity, DiagnosticOptions options)
 {
     Id       = id;
     Severity = severity;
     Message  = message;
     Options  = options;
 }
コード例 #2
0
        private static AggregateApplicationProcessor CreateApplicationProcessor(ReplicaRegistry replicaRegistry, string[] args, string[] servicesToDebug, Microsoft.Extensions.Logging.ILogger logger, IConfiguration configuration)
        {
            var diagnosticOptions    = DiagnosticOptions.FromConfiguration(configuration);
            var diagnosticsCollector = new DiagnosticsCollector(logger, diagnosticOptions);

            // Print out what providers were selected and their values
            diagnosticOptions.DumpDiagnostics(logger);

            var processors = new List <IApplicationProcessor>
            {
                new EventPipeDiagnosticsRunner(logger, diagnosticsCollector),
                new PortAssigner(logger),
                new ProxyService(logger),
                new HttpProxyService(logger),
                new DockerRunner(logger, replicaRegistry),
                new ProcessRunner(logger, replicaRegistry, ProcessRunnerOptions.FromArgs(args, servicesToDebug))
            };

            // If the docker command is specified then transform the ProjectRunInfo into DockerRunInfo
            if (args.Contains("--docker"))
            {
                processors.Insert(0, new TransformProjectsIntoContainers(logger));
            }

            return(new AggregateApplicationProcessor(processors));
        }
コード例 #3
0
        protected DiagnosticEventObserver(ILoggerFactory loggerFactory, ITracer tracer, DiagnosticOptions options)
            : base(loggerFactory, tracer)
        {
            _options = options;

            if (options.LogEvents)
            {
                _genericEventProcessor = new GenericEventProcessor(GetListenerName(), Tracer, Logger);
            }
        }
コード例 #4
0
 /// <summary>
 /// Transforms the current <see cref="DiagnosticResult"/> to have the specified <see cref="Options"/>.
 /// </summary>
 /// <param name="options">The options to consider during validation of the expected diagnostic.</param>
 /// <returns>A new <see cref="DiagnosticResult"/> copied from the current instance with the specified
 /// <paramref name="options"/> applied.</returns>
 public DiagnosticResult WithOptions(DiagnosticOptions options)
 {
     return(new DiagnosticResult(
                spans: _spans,
                suppressMessage: _suppressMessage,
                message: _message,
                severity: Severity,
                options: options,
                id: Id,
                messageFormat: MessageFormat,
                messageArguments: MessageArguments));
 }
コード例 #5
0
        public static void EnableDiagnostics(this Workspace workspace, DiagnosticOptions options)
        {
            var diagnosticProviderOptions = (DiagnosticProvider.Options) 0;

            if ((options & DiagnosticOptions.Syntax) != 0)
            {
                diagnosticProviderOptions |= DiagnosticProvider.Options.Syntax;
            }
            if ((options & DiagnosticOptions.Semantic) != 0)
            {
                diagnosticProviderOptions |= DiagnosticProvider.Options.Semantic;
            }

            DiagnosticProvider.Enable(workspace, diagnosticProviderOptions);
        }
        public static void AddDiagnostics(this IServiceCollection services, Action <DiagnosticOptions> action = null)
        {
            DiagnosticOptions diagnosticOptions = new DiagnosticOptions();

            action?.Invoke(diagnosticOptions);
            services.AddSingleton(diagnosticOptions);
            if (diagnosticOptions.IsEnableHostingTracing)
            {
                services.AddSingleton <IHostingTracingDiagnosticProcessor, HostingTracingDiagnosticProcessor>();
                services.AddSingleton <ITracingDiagnosticProcessor, HostingTracingDiagnosticProcessor>();
            }
            if (diagnosticOptions.IsEnableHttpClientTracing)
            {
                services.AddSingleton <IHttpClientTracingDiagnosticProcessor, HttpClientTracingDiagnosticProcessor>();
                services.AddSingleton <ITracingDiagnosticProcessor, HttpClientTracingDiagnosticProcessor>();
            }
            services.AddSingleton <IObserver <DiagnosticListener>, TracingDiagnosticObserver>();
            services.AddSingleton <TracingDiagnosticObserver>();
            services.AddSingleton <ILoggerProvider, DiagnosticLogProvider>();
            services.Add(new ServiceDescriptor(typeof(IDiagnosticTraceLogger <>), typeof(DiagnosticTraceLogger <>), ServiceLifetime.Singleton));


            //RequestRuleRegister.Register((serviceProvider, request) =>
            //{
            //    if (!(request.Headers.ContainsKey(HttpConstant.TRACEMICROSERVICE) && Regex.Match(request.Path, @"^(/v\d\.\d)?/api").Success))
            //    {
            //        return false;
            //    }
            //    return true;
            //});
            diagnosticOptions.SetRequestRequestRule((serviceProvider, request) =>
            {
                if (serviceProvider == null || request == null)
                {
                    return(false);
                }
                foreach (var rule in RequestRuleRegister.GetAll())
                {
                    bool flag = rule.Invoke(serviceProvider, request);
                    if (!flag)
                    {
                        return(flag);
                    }
                }
                return(true);
            });
            services.AddHttpContextAccessor();
        }
コード例 #7
0
        private static AggregateApplicationProcessor CreateApplicationProcessor(string[] args, Microsoft.Extensions.Logging.ILogger logger, IConfiguration configuration)
        {
            var diagnosticOptions    = DiagnosticOptions.FromConfiguration(configuration);
            var diagnosticsCollector = new DiagnosticsCollector(logger, diagnosticOptions);

            // Print out what providers were selected and their values
            diagnosticOptions.DumpDiagnostics(logger);

            var processor = new AggregateApplicationProcessor(new IApplicationProcessor[] {
                new EventPipeDiagnosticsRunner(logger, diagnosticsCollector),
                new ProxyService(logger),
                new DockerRunner(logger),
                new ProcessRunner(logger, ProcessRunnerOptions.FromArgs(args)),
            });

            return(processor);
        }
コード例 #8
0
 private DiagnosticResult(
     ImmutableArray <DiagnosticLocation> spans,
     bool suppressMessage,
     string?message,
     DiagnosticSeverity severity,
     DiagnosticOptions options,
     string id,
     LocalizableString?messageFormat,
     object?[]?messageArguments)
 {
     _spans           = spans;
     _suppressMessage = suppressMessage;
     _message         = message;
     Severity         = severity;
     Options          = options;
     Id               = id;
     MessageFormat    = messageFormat;
     MessageArguments = messageArguments;
 }
コード例 #9
0
 public DiagnosticController(IOptionsSnapshot <DiagnosticOptions> options)
 {
     _options = options.Value;
 }
コード例 #10
0
 public DiagnosticResult WithOptions(DiagnosticOptions options)
 {
     return(new DiagnosticResult(Id, Message, Severity, options));
 }
コード例 #11
0
 public DiagnosticController(IApplicationRequestContext requestContext, IOptionsMonitor <DiagnosticOptions> options)
 {
     _requestContext = requestContext;
     _options        = options.CurrentValue;
 }
コード例 #12
0
 public DiagnosticController(IApplicationRequestContext requestContext, IOptions <DiagnosticOptions> options)
 {
     _requestContext = requestContext;
     _options        = options.Value;
 }