public DiagnosticMethodSubscription(IDiagnosticProcessor diagnosticProcessor, MethodInfo method,
                                     string diagnosticName)
 {
     _DiagnosticProcessor = diagnosticProcessor;
     _reflector           = method.GetReflector();
     _diagnosticName      = diagnosticName;
     _parameterResolvers  = GetParameterResolvers(method).ToArray();
 }
 public DiagnosticEventCollection(IDiagnosticProcessor diagnosticProcessor)
 {
     foreach (var method in diagnosticProcessor.GetType().GetMethods())
     {
         var diagnosticName = method.GetCustomAttribute <DiagnosticNameAttribute>();
         if (diagnosticName == null)
         {
             continue;
         }
         _eventDict.Add(diagnosticName.Name, new DiagnosticEvent(diagnosticProcessor, method));
     }
 }
        private static Listener EnlistTarget(IDiagnosticProcessor target)
        {
            var listener = new Listener(target);

            //var methodInfos = target.GetType().GetMethods();//获取所有公开的方法(包括继承方法)

            var typeInfo    = target.GetType().GetTypeInfo();//获取所有方法(包括私有方法,不包括继承方法)
            var methodInfos = typeInfo.DeclaredMethods;

            foreach (var methodInfo in methodInfos)
            {
                var diagnosticNameAttribute = methodInfo.GetCustomAttribute <DiagnosticAdapterName>();
                if (diagnosticNameAttribute != null)
                {
                    try
                    {
                        listener.Subscriptions.Add(diagnosticNameAttribute.Name, new DiagnosticMethodSubscription(target, methodInfo, diagnosticNameAttribute.Name));
                    }
                    catch { }
                }
            }

            return(listener);
        }
Example #4
0
 public DiagnosticEventObserver(IDiagnosticProcessor diagnosticProcessor)
 {
     _eventCollection = new DiagnosticEventCollection(diagnosticProcessor);
 }
        protected override IDisposable Subscribe(DiagnosticListener listener, IDiagnosticProcessor target)
        {
            var adapter = new DiagnosticSourceAdapter(target, _loggerFactory);

            return(listener.Subscribe(adapter, adapter.IsEnabled));
        }
Example #6
0
 public DiagnosticEvent(IDiagnosticProcessor diagnosticProcessor, MethodInfo method)
 {
     _diagnosticProcessor = diagnosticProcessor;
     _reflector           = method.GetReflector();
     _parameterResolvers  = GetParameterResolvers(method).ToArray();
 }
 public DiagnosticSourceAdapter(IDiagnosticProcessor tracingDiagnosticProcessor, ILoggerFactory loggerFactory)
 {
     _logger   = loggerFactory.CreateLogger(typeof(DiagnosticSourceAdapter));
     _listener = EnlistTarget(tracingDiagnosticProcessor);
 }
Example #8
0
 protected virtual IDisposable Subscribe(DiagnosticListener listener,
                                         IDiagnosticProcessor tracingDiagnosticProcessor)
 {
     return(listener.SubscribeWithAdapter(tracingDiagnosticProcessor));
 }