sapling/eden/fs/telemetry/StructuredLogger.cpp
Stiopa Koltsov babc84bed6 Add sandcastle_instance_id column to scuba
Summary: To be able to quickly find all activity related to given Sandcastle job as discussed in [this workplace post](https://fb.workplace.com/groups/2120196508269853/permalink/2899040243718805).

Reviewed By: kmancini

Differential Revision: D27541803

fbshipit-source-id: a55900064bbee92da902de785ebe0c0e8738c3a2
2021-04-03 00:11:47 -07:00

48 lines
1.3 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#include "eden/fs/telemetry/StructuredLogger.h"
#include "eden/fs/telemetry/SessionId.h"
#include <time.h>
namespace {
/**
* The log database populates the time field automatically.
*/
constexpr bool kExplicitTimeField = true;
} // namespace
namespace facebook {
namespace eden {
StructuredLogger::StructuredLogger(bool enabled, SessionInfo sessionInfo)
: enabled_{enabled},
sessionId_{getSessionId()},
sessionInfo_{std::move(sessionInfo)} {}
DynamicEvent StructuredLogger::populateDefaultFields(const char* type) {
DynamicEvent event;
if (kExplicitTimeField) {
event.addInt("time", ::time(nullptr));
}
event.addInt("session_id", sessionId_);
event.addString("type", type);
event.addString("user", sessionInfo_.username);
event.addString("host", sessionInfo_.hostname);
if (sessionInfo_.sandcastleInstanceId.has_value()) {
event.addInt("sandcastle_instance_id", *sessionInfo_.sandcastleInstanceId);
}
event.addString("os", sessionInfo_.os);
event.addString("osver", sessionInfo_.osVersion);
event.addString("edenver", sessionInfo_.edenVersion);
return event;
}
} // namespace eden
} // namespace facebook