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:
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;