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); }
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)); }
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); }
protected virtual IDisposable Subscribe(DiagnosticListener listener, IDiagnosticProcessor tracingDiagnosticProcessor) { return(listener.SubscribeWithAdapter(tracingDiagnosticProcessor)); }