winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 3f1f585b5c965e86be2071fc95264c8262462ee6
parent fa3883c85729d881e10a5848292527f1f6888adb
Author: mapill-msft <58245272+mapill-msft@users.noreply.github.com>
Date:   Fri, 13 Dec 2019 10:49:17 -0800

Telemetry wrapper (#9)

* Adding a sample wrapper for Telemetry

* Adding Privacy tagging for telemetry events.

Diffstat:
Msrc/AppInstallerCLICore/Core.cpp | 2+-
Msrc/AppInstallerCLICore/pch.h | 3++-
Msrc/Telemetry/Telemetry.vcxitems | 1+
Asrc/Telemetry/TelemetryWrapper.cpp | 41+++++++++++++++++++++++++++++++++++++++++
Msrc/Telemetry/TelemetryWrapper.h | 23++++++++++++-----------
Msrc/Telemetry/TraceLogging.cpp | 1+
6 files changed, 58 insertions(+), 13 deletions(-)

diff --git a/src/AppInstallerCLICore/Core.cpp b/src/AppInstallerCLICore/Core.cpp @@ -11,7 +11,7 @@ using namespace AppInstaller::CLI; int CLICoreMain(int argc, wchar_t const** argv) try { init_apartment(); - TraceLoggingRegistration tlRegistration; + TelemetryTraceLogger::GetInstance().LogMessage(L"Launched PackageManager Client."); RootCommand root; Invocation invocation{ argc, argv }; diff --git a/src/AppInstallerCLICore/pch.h b/src/AppInstallerCLICore/pch.h @@ -9,4 +9,4 @@ #include <winrt/Windows.Foundation.Collections.h> #include <iostream> -#include <memory> +#include <memory>+ \ No newline at end of file diff --git a/src/Telemetry/Telemetry.vcxitems b/src/Telemetry/Telemetry.vcxitems @@ -14,6 +14,7 @@ <ProjectCapability Include="SourceItemsFromImports" /> </ItemGroup> <ItemGroup> + <ClCompile Include="$(MSBuildThisFileDirectory)TelemetryWrapper.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)TraceLogging.cpp" /> </ItemGroup> <ItemGroup> diff --git a/src/Telemetry/TelemetryWrapper.cpp b/src/Telemetry/TelemetryWrapper.cpp @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#include "pch.h" +#include "TelemetryWrapper.h" + +#define PKGMGR_CLIENT_EVENT_INFO "Information" +#define PKGMGR_CLIENT_MESSAGE "Message" + +namespace AppInstaller::CLI +{ + TelemetryTraceLogger::TelemetryTraceLogger() + { + RegisterTraceLogging(); + } + + TelemetryTraceLogger::~TelemetryTraceLogger() + { + UnRegisterTraceLogging(); + } + + TelemetryTraceLogger& TelemetryTraceLogger::GetInstance() + { + static TelemetryTraceLogger instance; + return instance; + } + + void TelemetryTraceLogger::LogMessage(std::wstring_view message) + { + if (!g_IsTelemetryProviderEnabled) + { + TraceLoggingWrite(g_hTelemetryProvider, + PKGMGR_CLIENT_EVENT_INFO, + TraceLoggingWideString(message.data(), PKGMGR_CLIENT_MESSAGE), + TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), + TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES)); + } + + //ToDo if required add logging to disk file here + } +}+ \ No newline at end of file diff --git a/src/Telemetry/TelemetryWrapper.h b/src/Telemetry/TelemetryWrapper.h @@ -2,19 +2,19 @@ // Licensed under the MIT License. #pragma once -#include <windows.h> #include "TraceLogging.h" +#include <xstring> -struct TraceLoggingRegistration +namespace AppInstaller::CLI { - TraceLoggingRegistration() + class TelemetryTraceLogger { - RegisterTraceLogging(); - } - - ~TraceLoggingRegistration() - { - UnRegisterTraceLogging(); - } -}; + public: + static TelemetryTraceLogger& GetInstance(); + virtual void LogMessage(std::wstring_view message); + private: + TelemetryTraceLogger(); + ~TelemetryTraceLogger(); + }; +}+ \ No newline at end of file diff --git a/src/Telemetry/TraceLogging.cpp b/src/Telemetry/TraceLogging.cpp @@ -45,6 +45,7 @@ void RegisterTraceLogging() nullptr, nullptr, TraceLoggingHResult(hr), + TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES)); g_TelemetryProviderActivityId = GUID_NULL;