auto tv = log_clock::to_timeval(t);
std::tm bdt;
localtime_r(&tv.tv_sec, &bdt);
+ char tz[32] = { 0 };
+ strftime(tz, sizeof(tz), "%z", &bdt);
int r;
if (coarse) {
- r = std::snprintf(out, outlen, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
+ r = std::snprintf(out, outlen, "%04d-%02d-%02dT%02d:%02d:%02d.%03ld%s",
bdt.tm_year + 1900, bdt.tm_mon + 1, bdt.tm_mday,
bdt.tm_hour, bdt.tm_min, bdt.tm_sec,
- static_cast<long>(tv.tv_usec / 1000));
+ static_cast<long>(tv.tv_usec / 1000), tz);
} else {
- r = std::snprintf(out, outlen, "%04d-%02d-%02d %02d:%02d:%02d.%06ld",
+ r = std::snprintf(out, outlen, "%04d-%02d-%02dT%02d:%02d:%02d.%06ld%s",
bdt.tm_year + 1900, bdt.tm_mon + 1, bdt.tm_mday,
bdt.tm_hour, bdt.tm_min, bdt.tm_sec,
- static_cast<long>(tv.tv_usec));
+ static_cast<long>(tv.tv_usec), tz);
}
// Since our caller just adds the return value to something without
// checking it…
ceph::logging::append_time(t, buf, buflen);
auto c = std::strrchr(buf, '.');
ASSERT_NE(c, nullptr);
- ASSERT_EQ(3u, strlen(c + 1));
+ ASSERT_EQ(8u, strlen(c + 1));
}
{
clock.refine();
ceph::logging::append_time(t, buf, buflen);
auto c = std::strrchr(buf, '.');
ASSERT_NE(c, nullptr);
- ASSERT_EQ(6u, std::strlen(c + 1));
+ ASSERT_EQ(11u, std::strlen(c + 1));
}
}