calculator/src/GraphControl/Logger/TraceLogger.cpp
Pepe Rivera 7dcfe0439c
Add line width option (#1098)
* add line thickness

* clean up

* Fix pr comments
2020-03-26 14:15:44 -07:00

98 lines
4.0 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#include "pch.h"
#include "TraceLogger.h"
using namespace TraceLogging;
using namespace Concurrency;
using namespace std;
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Diagnostics;
using namespace Windows::Globalization;
namespace GraphControl
{
static reader_writer_lock s_traceLoggerLock;
constexpr auto GRAPHING_MODE = L"Graphing";
constexpr auto CALC_MODE = L"CalcMode";
// Diagnostics events. Uploaded to asimov.
constexpr auto EVENT_NAME_EQUATION_COUNT_CHANGED = L"EquationCountChanged";
constexpr auto EVENT_NAME_FUNCTION_ANALYSIS_PERFORMED = L"FunctionAnalysisPerformed";
constexpr auto EVENT_NAME_VARIABLES_COUNT_CHANGED = L"VariablesCountChanged";
constexpr auto EVENT_NAME_LINE_WIDTH_CHANGED = L"LineWidthChanged";
TraceLogger ^ TraceLogger::GetInstance()
{
static TraceLogger ^ s_selfInstance = ref new TraceLogger();
return s_selfInstance;
}
void TraceLogger::LogEquationCountChanged(int currentValidEquations, int currentInvalidEquations)
{
static bool firstRun = true;
if (firstRun)
{
firstRun = false;
return;
}
// Update the total valid/invalid equations to record the max value.
// Equations are added/removed/updated one at a time, so we know either
// currentValidEquations or currentInvalidEquations increased,
// but they cannot both increase at the same time
// If an equation was removed, do not decrement the total count.
static uint64 TotalValidEquations = 0;
static uint64 TotalInvalidEquations = 0;
static uint64 PreviousValidEquations = 0;
static uint64 PreviousInvalidEquations = 0;
if (currentValidEquations > PreviousValidEquations)
{
TotalValidEquations++;
}
else if (currentInvalidEquations > PreviousInvalidEquations)
{
TotalInvalidEquations++;
}
PreviousValidEquations = currentValidEquations;
PreviousInvalidEquations = currentInvalidEquations;
auto fields = ref new LoggingFields();
fields->AddString(StringReference(CALC_MODE), StringReference(GRAPHING_MODE));
fields->AddUInt64(StringReference(L"ConcurrentValidFunctions"), currentValidEquations);
fields->AddUInt64(StringReference(L"ConcurrentInvalidFunctions"), currentInvalidEquations);
fields->AddUInt64(StringReference(L"TotalValidFunctions"), TotalValidEquations);
fields->AddUInt64(StringReference(L"TotalInvalidFunctions"), TotalInvalidEquations);
TraceLoggingCommon::GetInstance()->LogLevel2Event(StringReference(EVENT_NAME_EQUATION_COUNT_CHANGED), fields);
}
void TraceLogger::LogFunctionAnalysisPerformed(int analysisErrorType, uint32 tooComplexFlag)
{
auto fields = ref new LoggingFields();
fields->AddString(StringReference(CALC_MODE), StringReference(GRAPHING_MODE));
fields->AddInt32(StringReference(L"AnalysisErrorType"), analysisErrorType);
fields->AddUInt32(StringReference(L"TooComplexFeatures"), tooComplexFlag);
TraceLoggingCommon::GetInstance()->LogLevel2Event(StringReference(EVENT_NAME_FUNCTION_ANALYSIS_PERFORMED), fields);
}
void TraceLogger::LogVariableCountChanged(int variablesCount)
{
auto fields = ref new LoggingFields();
fields->AddString(StringReference(CALC_MODE), StringReference(GRAPHING_MODE));
fields->AddInt64(StringReference(L"VariableCount"), variablesCount);
TraceLoggingCommon::GetInstance()->LogLevel2Event(StringReference(EVENT_NAME_VARIABLES_COUNT_CHANGED), fields);
}
void TraceLogger::LogLineWidthChanged()
{
auto fields = ref new LoggingFields();
fields->AddString(StringReference(CALC_MODE), StringReference(GRAPHING_MODE));
TraceLoggingCommon::GetInstance()->LogLevel2Event(StringReference(EVENT_NAME_LINE_WIDTH_CHANGED), fields);
}
}