Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1328)

Unified Diff: base/time/time.cc

Issue 669083002: Add logging support for base::Time* types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing <string> include. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/time/time.h ('k') | base/time/time_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/time/time.cc
diff --git a/base/time/time.cc b/base/time/time.cc
index f7313565a3e80542599fc597642b9594a4f426db..18155e89cc3e35b34c93037fe6ea72e3312b3d4b 100644
--- a/base/time/time.cc
+++ b/base/time/time.cc
@@ -4,12 +4,15 @@
#include "base/time/time.h"
+#include <ios>
#include <limits>
#include <ostream>
+#include <sstream>
#include "base/float_util.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
+#include "base/strings/stringprintf.h"
#include "base/third_party/nspr/prtime.h"
namespace base {
@@ -94,6 +97,10 @@ int64 TimeDelta::InMicroseconds() const {
return delta_;
}
+std::ostream& operator<<(std::ostream& os, TimeDelta time_delta) {
+ return os << time_delta.InSecondsF() << "s";
+}
+
// Time -----------------------------------------------------------------------
// static
@@ -230,6 +237,20 @@ bool Time::FromStringInternal(const char* time_string,
return true;
}
+std::ostream& operator<<(std::ostream& os, Time time) {
+ Time::Exploded exploded;
+ time.UTCExplode(&exploded);
+ // Use StringPrintf because iostreams formatting is painful.
+ return os << StringPrintf("%04d-%02d-%02d %02d:%02d:%02d.%03d UTC",
+ exploded.year,
+ exploded.month,
+ exploded.day_of_month,
+ exploded.hour,
+ exploded.minute,
+ exploded.second,
+ exploded.millisecond);
+}
+
// Local helper class to hold the conversion from Time to TickTime at the
// time of the Unix epoch.
class UnixEpochSingleton {
@@ -253,6 +274,13 @@ TimeTicks TimeTicks::UnixEpoch() {
return leaky_unix_epoch_singleton_instance.Get().unix_epoch();
}
+std::ostream& operator<<(std::ostream& os, TimeTicks time_ticks) {
+ // This function formats a TimeTicks object as if it was a Time object.
rvargas (doing something else) 2014/10/23 02:36:38 Shouldn't we log TimeTicks as a TimeDelta instead?
Adam Rice 2014/10/23 03:42:02 TimeDeltas are normally logged to 4 digits of prec
rvargas (doing something else) 2014/10/23 19:30:43 But TimeTicks expressed as a random date doesn't s
Adam Rice 2014/10/24 04:05:39 In the "rounding error" and "monotonic clock faile
rvargas (doing something else) 2014/10/24 23:24:18 The second one sounds like a TimeTicks unit test n
Adam Rice 2014/10/28 05:43:12 Okay, I changed it to "bogo-microseconds". I see
+ const Time as_time =
+ Time::UnixEpoch() + (time_ticks - TimeTicks::UnixEpoch());
+ return os << as_time;
+}
+
// Time::Exploded -------------------------------------------------------------
inline bool is_in_range(int value, int lo, int hi) {
« no previous file with comments | « base/time/time.h ('k') | base/time/time_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698