RoslynTelemetrySetup.cs 1.8 KB
Newer Older
D
DotNet Bot 已提交
1 2 3 4 5 6 7 8
using System;
using System.ComponentModel.Composition;
using System.Diagnostics;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Internal.Log;
using Microsoft.CodeAnalysis.Options;
using Microsoft.Internal.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.ComponentModelHost;
9
using Microsoft.VisualStudio.LanguageServices;
D
DotNet Bot 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22
using Microsoft.VisualStudio.LanguageServices.Setup;

namespace Microsoft.VisualStudio.LanguageServices.Telemetry
{
    [Export(typeof(IRoslynTelemetrySetup))]
    internal class RoslynTelemetrySetup : IRoslynTelemetrySetup
    {
        public void Initialize(IServiceProvider serviceProvider)
        {
            var componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
            var workspace = componentModel.GetService<VisualStudioWorkspace>();

            // initialize host context on UI thread.
23
            var projectTypeLookup = workspace.Services.GetService<IProjectTypeLookupService>();
D
DotNet Bot 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37

            // set initial logger
            var optionService = workspace.Services.GetService<IOptionService>();
            var loggingChecker = Logger.GetLoggingChecker(optionService);

            var telemetryService = serviceProvider.GetService(typeof(SVsTelemetryService)) as IVsTelemetryService;
            Logger.SetLogger(
                AggregateLogger.Create(
                    CodeMarkerLogger.Instance,
                    new EtwLogger(loggingChecker),
                    new VSTelemetryLogger(telemetryService),
                    new VSTelemetryActivityLogger(telemetryService),
                    Logger.GetLogger()));

38
            Logger.Log(FunctionId.Run_Environment, KeyValueLogMessage.Create(m => m["Version"] = FileVersionInfo.GetVersionInfo(typeof(VisualStudioWorkspace).Assembly.Location).FileVersion));
D
DotNet Bot 已提交
39 40 41
        }
    }
}