31 string sourceLocation;
35 : operation{std::move(op)}, sourceLocation{std::move(sourceLoc)} {}
44 auto tie = [](
const OperationContext& oc) {
return std::tie(oc.operation, oc.sourceLocation); };
45 return tie(*
this) < tie(rhs);
53 : type{std::move(type)},
54 operationContext{std::move(opContext)},
55 message{std::move(message)},
56 serverReply{std::move(serverReply)} {}
77 bool isSuccess =
false;
78 bool uploadNotDownload =
false;
79 int64_t transferStartTime = 0;
80 int64_t totalDurationMs = -1;
81 int64_t transferDurationMs = -1;
82 size_t transferOffset = 0;
83 size_t transferRequestSize = 0;
84 size_t transferSize = 0;
85 size_t retryCount = 0;
86 size_t errorCount = 0;
87 size_t error429Count = 0;
96 uploadNotDownload =
true;
100 uploadNotDownload =
false;
105 totalDurationMs = durationMs;
108 TrafficEvent& setTransferDurationMs(int64_t aTransferDurationMs) {
109 transferDurationMs = aTransferDurationMs;
113 transferOffset = offset;
116 TrafficEvent& setTransferRequestSize(
size_t aTransferRequestSize) {
117 transferRequestSize = aTransferRequestSize;
121 transferSize = aTransferSize;
125 retryCount = aRetryCount;
128 TrafficEvent& setError429Count(
size_t anError429Count) {
129 error429Count = anError429Count;
133 errorCount = anErrorCount;
152 static constexpr const char* kErrorType =
"error";
153 static constexpr const char* kWarningType =
"warning";
154 static constexpr const char* kInfoType =
"info";
159 static void setLogger(unique_ptr<TelemetryLogger> telemetryLogger =
nullptr);
164 const string& message,
165 const string& serverMessage = {}) {
166 getInstance()->
logEvent(
LogEvent(kErrorType, operationContext, message, serverMessage));
168 static inline void warning(
169 const OperationContext& operationContext,
170 const string& message,
171 const string& serverMessage = {}) {
172 getInstance()->
logEvent(LogEvent(kWarningType, operationContext, message, serverMessage));
174 static inline void info(
175 const OperationContext& operationContext,
176 const string& message,
177 const string& serverMessage = {}) {
178 getInstance()->
logEvent(LogEvent(kInfoType, operationContext, message, serverMessage));
180 static inline void event(
181 const string& eventType,
182 const OperationContext& operationContext,
183 const string& message,
184 const string& serverMessage = {}) {
185 getInstance()->
logEvent(LogEvent(eventType, operationContext, message, serverMessage));
187 static inline void traffic(
const OperationContext& operationContext,
const TrafficEvent& event) {
188 getInstance()->logTraffic(operationContext, event);
190 static inline void flush() {
191 getInstance()->flushEvents();
195 virtual void logEvent(LogEvent&& event);
196 virtual void logTraffic(
const OperationContext& operationContext,
const TrafficEvent& event);
197 virtual void flushEvents() {}
207 static std::atomic<TelemetryLogger*>& getCurrentLogger();
210 return getCurrentLogger().load(std::memory_order_relaxed);
TelemetryLogger to report important events.
Definition TelemetryLogger.h:148
virtual void start()
Start telemetry: background threads should be started, as needed.
Definition TelemetryLogger.h:200
static void setLogger(unique_ptr< TelemetryLogger > telemetryLogger=nullptr)
Definition TelemetryLogger.cpp:42
virtual void stop()
Definition TelemetryLogger.h:203
virtual void logEvent(LogEvent &&event)
Actual methods that implement the behaviors.
Definition TelemetryLogger.cpp:62
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:162
Definition Compressor.cpp:113
General purpose telemetry event.
Definition TelemetryLogger.h:50
Context description for telemetry events.
Definition TelemetryLogger.h:29
Telemetry event specialized to report cloud traffic.
Definition TelemetryLogger.h:76