Skip to content

Commit

Permalink
Fix output time in metrics OStream exporter (open-telemetry#1346)
Browse files Browse the repository at this point in the history
  • Loading branch information
ThomsonTan authored Apr 28, 2022
1 parent a4bd3b0 commit 3a4a3a3
Showing 1 changed file with 30 additions and 3 deletions.
33 changes: 30 additions & 3 deletions exporters/ostream/src/metric_exporter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,34 @@ namespace
std::string timeToString(opentelemetry::common::SystemTimestamp time_stamp)
{
std::time_t epoch_time = std::chrono::system_clock::to_time_t(time_stamp);
return std::ctime(&epoch_time);

struct tm *tm_ptr = nullptr;
# if defined(_MSC_VER)
struct tm buf_tm;
if (!gmtime_s(&buf_tm, &epoch_time))
{
tm_ptr = &buf_tm;
}
# else
tm_ptr = std::gmtime(&epoch_time);
# endif

char buf[100];
char *date_str = nullptr;
if (tm_ptr == nullptr)
{
OTEL_INTERNAL_LOG_ERROR("[OStream Metric] gmtime failed for " << epoch_time);
}
else if (std::strftime(buf, sizeof(buf), "%c", tm_ptr) > 0)
{
date_str = buf;
}
else
{
OTEL_INTERNAL_LOG_ERROR("[OStream Metric] strftime failed for " << epoch_time);
}

return std::string{date_str};
}
} // namespace

Expand Down Expand Up @@ -68,8 +95,8 @@ void OStreamMetricExporter::printInstrumentationInfoMetricData(
for (const auto &record : info_metric.metric_data_)
{
sout_ << "\n start time\t: " << timeToString(record.start_ts)
<< " end time\t: " << timeToString(record.end_ts)
<< " description\t: " << record.instrument_descriptor.description_
<< "\n end time\t: " << timeToString(record.end_ts)
<< "\n description\t: " << record.instrument_descriptor.description_
<< "\n unit\t\t: " << record.instrument_descriptor.unit_;

for (const auto &pd : record.point_data_attr_)
Expand Down

0 comments on commit 3a4a3a3

Please sign in to comment.