30 string sourceLocation;
34 : operation{std::move(op)}, sourceLocation{std::move(sourceLoc)} {}
43 auto tie = [](
const OperationContext& oc) {
return std::tie(oc.operation, oc.sourceLocation); };
44 return tie(*
this) < tie(rhs);
52 : type{std::move(type)},
53 operationContext{std::move(opContext)},
54 message{std::move(message)},
55 serverReply{std::move(serverReply)} {}
66 std::string serverReply;
76 bool isSuccess =
false;
77 bool uploadNotDownload =
false;
78 int64_t transferStartTime = 0;
79 int64_t totalDurationMs = -1;
80 int64_t transferDurationMs = -1;
81 size_t transferOffset = 0;
82 size_t transferRequestSize = 0;
83 size_t transferSize = 0;
84 size_t retryCount = 0;
85 size_t errorCount = 0;
86 size_t error429Count = 0;
95 uploadNotDownload =
true;
99 uploadNotDownload =
false;
104 totalDurationMs = durationMs;
107 TrafficEvent& setTransferDurationMs(int64_t aTransferDurationMs) {
108 transferDurationMs = aTransferDurationMs;
112 transferOffset = offset;
115 TrafficEvent& setTransferRequestSize(
size_t aTransferRequestSize) {
116 transferRequestSize = aTransferRequestSize;
120 transferSize = aTransferSize;
124 retryCount = aRetryCount;
127 TrafficEvent& setError429Count(
size_t anError429Count) {
128 error429Count = anError429Count;
132 errorCount = anErrorCount;
151 static constexpr const char* kErrorType =
"error";
152 static constexpr const char* kWarningType =
"warning";
153 static constexpr const char* kInfoType =
"info";
158 static void setLogger(std::unique_ptr<TelemetryLogger> telemetryLogger =
nullptr);
163 const string& message,
164 const string& serverMessage = {}) {
165 getInstance()->
logEvent(
LogEvent(kErrorType, operationContext, message, serverMessage));
167 static inline void warning(
168 const OperationContext& operationContext,
169 const string& message,
170 const string& serverMessage = {}) {
171 getInstance()->
logEvent(LogEvent(kWarningType, operationContext, message, serverMessage));
173 static inline void info(
174 const OperationContext& operationContext,
175 const string& message,
176 const string& serverMessage = {}) {
177 getInstance()->
logEvent(LogEvent(kInfoType, operationContext, message, serverMessage));
179 static inline void event(
180 const std::string& eventType,
181 const OperationContext& operationContext,
182 const string& message,
183 const string& serverMessage = {}) {
184 getInstance()->
logEvent(LogEvent(eventType, operationContext, message, serverMessage));
186 static inline void traffic(
const OperationContext& operationContext,
const TrafficEvent& event) {
187 getInstance()->logTraffic(operationContext, event);
189 static inline void flush() {
190 getInstance()->flushEvents();
194 virtual void logEvent(LogEvent&& event);
195 virtual void logTraffic(
const OperationContext& operationContext,
const TrafficEvent& event);
196 virtual void flushEvents() {}
206 static std::atomic<TelemetryLogger*>& getCurrentLogger();
209 return getCurrentLogger().load(std::memory_order_relaxed);
TelemetryLogger to report important events.
Definition TelemetryLogger.h:147
virtual void start()
Start telemetry: background threads should be started, as needed.
Definition TelemetryLogger.h:199
virtual void stop()
Definition TelemetryLogger.h:202
static void setLogger(std::unique_ptr< TelemetryLogger > telemetryLogger=nullptr)
Definition TelemetryLogger.cpp:42
virtual void logEvent(LogEvent &&event)
Actual methods that implement the behaviors.
Definition TelemetryLogger.cpp:59
static void error(const OperationContext &operationContext, const string &message, const string &serverMessage={})
methods for clients to use without having to get an instance, etc
Definition TelemetryLogger.h:161
Definition Compressor.cpp:113
General purpose telemetry event.
Definition TelemetryLogger.h:49
Context description for telemetry events.
Definition TelemetryLogger.h:28
Telemetry event specialized to report cloud traffic.
Definition TelemetryLogger.h:75