98 lines
4.0 KiB
C++
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);
|
|
}
|
|
}
|