From ace40f298d04a158ef082887e1c6139735e617cf Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 17 Feb 2017 00:18:07 +0900 Subject: [PATCH] nghttpx: Update log time stamp in millisecond interval --- src/shrpx_log.cc | 2 +- src/shrpx_log_config.cc | 14 ++++++++++++++ src/shrpx_log_config.h | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/shrpx_log.cc b/src/shrpx_log.cc index f08ab6d8..8b177794 100644 --- a/src/shrpx_log.cc +++ b/src/shrpx_log.cc @@ -141,7 +141,7 @@ Log::~Log() { char buf[4_k]; auto tty = lgconf->errorlog_tty; - lgconf->update_tstamp(std::chrono::system_clock::now()); + lgconf->update_tstamp_millis(std::chrono::system_clock::now()); // Error log format: // (:) diff --git a/src/shrpx_log_config.cc b/src/shrpx_log_config.cc index 3290f0f8..51b23687 100644 --- a/src/shrpx_log_config.cc +++ b/src/shrpx_log_config.cc @@ -96,6 +96,20 @@ LogConfig *log_config() { return config.get(); } void delete_log_config() {} #endif // NOTHREADS +void LogConfig::update_tstamp_millis( + const std::chrono::system_clock::time_point &now) { + if (std::chrono::duration_cast( + now.time_since_epoch()) == + std::chrono::duration_cast( + time_str_updated.time_since_epoch())) { + return; + } + + time_str_updated = now; + + tstamp = std::make_shared(now); +} + void LogConfig::update_tstamp( const std::chrono::system_clock::time_point &now) { auto t0 = std::chrono::system_clock::to_time_t(time_str_updated); diff --git a/src/shrpx_log_config.h b/src/shrpx_log_config.h index 8be2d2bb..76fa78b6 100644 --- a/src/shrpx_log_config.h +++ b/src/shrpx_log_config.h @@ -59,6 +59,11 @@ struct LogConfig { bool errorlog_tty; LogConfig(); + // Updates time stamp if difference between time_str_updated and now + // is 1 or more milliseconds. + void update_tstamp_millis(const std::chrono::system_clock::time_point &now); + // Updates time stamp if difference between time_str_updated and + // now, converted to time_t, is 1 or more seconds. void update_tstamp(const std::chrono::system_clock::time_point &now); };