/// <summary> /// Initializes global instrumentation values. /// </summary> public static void Initialize() { if (Interlocked.Exchange(ref _firstInitialization, 0) != 1) { // Initialize() was already called before return; } try { // Creates GlobalSettings instance and loads plugins var plugins = PluginManager.TryLoadPlugins(GlobalSettings.Source.PluginsConfiguration); // First call to create Tracer instace Tracer.Instance = new Tracer(plugins); } catch { // ignore } #if !NETFRAMEWORK try { if (GlobalSettings.Source.DiagnosticSourceEnabled) { // check if DiagnosticSource is available before trying to use it var type = Type.GetType("System.Diagnostics.DiagnosticSource, System.Diagnostics.DiagnosticSource", throwOnError: false); if (type == null) { Log.Warning("DiagnosticSource type could not be loaded. Skipping diagnostic observers."); } else { // don't call this method unless DiagnosticSource is available StartDiagnosticManager(); } } } catch { // ignore } // we only support Service Fabric Service Remoting instrumentation on .NET Core (including .NET 5+) if (string.Equals(FrameworkDescription.Instance.Name, ".NET Core", StringComparison.OrdinalIgnoreCase) || string.Equals(FrameworkDescription.Instance.Name, ".NET", StringComparison.OrdinalIgnoreCase)) { try { ServiceRemotingClient.StartTracing(); } catch { // ignore } try { ServiceRemotingService.StartTracing(); } catch { // ignore } } #endif }
internal static void InitializeNoNativeParts() { if (Interlocked.Exchange(ref _firstNonNativePartsInitialization, 0) != 1) { // InitializeNoNativeParts() was already called before return; } Log.Debug("Initialization of non native parts started."); try { var asm = typeof(Instrumentation).Assembly; Log.Information($"[Assembly metadata] Location: {asm.Location}, CodeBase: {asm.CodeBase}, GAC: {asm.GlobalAssemblyCache}, HostContext: {asm.HostContext}, SecurityRuleSet: {asm.SecurityRuleSet}"); } catch (Exception ex) { Log.Error(ex, ex.Message); } try { // ensure global instance is created if it's not already if (CIVisibility.Enabled) { CIVisibility.Initialize(); } else { Log.Debug("Initializing tracer singleton instance."); _ = Tracer.Instance; } } catch (Exception ex) { Log.Error(ex, ex.Message); } try { Log.Debug("Initializing security singleton instance."); _ = Security.Instance; } catch (Exception ex) { Log.Error(ex, ex.Message); } #if !NETFRAMEWORK try { if (GlobalSettings.Source.DiagnosticSourceEnabled) { // check if DiagnosticSource is available before trying to use it var type = Type.GetType("System.Diagnostics.DiagnosticSource, System.Diagnostics.DiagnosticSource", throwOnError: false); if (type == null) { Log.Warning("DiagnosticSource type could not be loaded. Skipping diagnostic observers."); } else { // don't call this method unless DiagnosticSource is available StartDiagnosticManager(); } } } catch { // ignore } // we only support Service Fabric Service Remoting instrumentation on .NET Core (including .NET 5+) if (FrameworkDescription.Instance.IsCoreClr()) { Log.Information("Initializing ServiceFabric instrumentation"); try { ServiceRemotingClient.StartTracing(); } catch { // ignore } try { ServiceRemotingService.StartTracing(); } catch { // ignore } } #endif Log.Debug("Initialization of non native parts finished."); }