sapling/eden/fs/telemetry/StructuredLogger.cpp
generatedunixname89002005287564 6c809740ae eden (2379049371826165760)
Reviewed By: xavierd

Differential Revision: D50550199

fbshipit-source-id: 27fc2c66194e44624e6b7381cedfec4c1d5d9615
2023-10-24 00:22:18 -07:00

51 lines
1.4 KiB
C++

/*
* Copyright (c) Meta Platforms, Inc. and 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 <ctime>
namespace {
/**
* The log database populates the time field automatically.
*/
constexpr bool kExplicitTimeField = true;
} // namespace
namespace facebook::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);
#if defined(__APPLE__)
event.addString("system_architecture", sessionInfo_.systemArchitecture);
#endif
event.addString("logged_by", "edenfs");
return event;
}
} // namespace facebook::eden