diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index 3ed7947..2f69cf4 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -349,12 +349,16 @@
   if (send_bitrate_stats.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.EstimatedSendBitrateInKbps",
                                 send_bitrate_stats.average);
+    LOG(LS_INFO) << "WebRTC.Call.EstimatedSendBitrateInKbps, "
+                 << send_bitrate_stats.ToString();
   }
   AggregatedStats pacer_bitrate_stats =
       pacer_bitrate_kbps_counter_.ProcessAndGetStats();
   if (pacer_bitrate_stats.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.PacerBitrateInKbps",
                                 pacer_bitrate_stats.average);
+    LOG(LS_INFO) << "WebRTC.Call.PacerBitrateInKbps, "
+                 << pacer_bitrate_stats.ToString();
   }
 }
 
@@ -365,24 +369,32 @@
   if (video_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.VideoBitrateReceivedInKbps",
                                 video_bytes_per_sec.average * 8 / 1000);
+    LOG(LS_INFO) << "WebRTC.Call.VideoBitrateReceivedInKbps, "
+                 << video_bytes_per_sec.ToString();
   }
   AggregatedStats audio_bytes_per_sec =
       received_audio_bytes_per_second_counter_.GetStats();
   if (audio_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.AudioBitrateReceivedInKbps",
                                 audio_bytes_per_sec.average * 8 / 1000);
+    LOG(LS_INFO) << "WebRTC.Call.AudioBitrateReceivedInKbps, "
+                 << audio_bytes_per_sec.ToString();
   }
   AggregatedStats rtcp_bytes_per_sec =
       received_rtcp_bytes_per_second_counter_.GetStats();
   if (rtcp_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.RtcpBitrateReceivedInBps",
                                 rtcp_bytes_per_sec.average * 8);
+    LOG(LS_INFO) << "WebRTC.Call.RtcpBitrateReceivedInBps, "
+                 << rtcp_bytes_per_sec.ToString();
   }
   AggregatedStats recv_bytes_per_sec =
       received_bytes_per_second_counter_.GetStats();
   if (recv_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
     RTC_HISTOGRAM_COUNTS_100000("WebRTC.Call.BitrateReceivedInKbps",
                                 recv_bytes_per_sec.average * 8 / 1000);
+    LOG(LS_INFO) << "WebRTC.Call.BitrateReceivedInKbps, "
+                 << recv_bytes_per_sec.ToString();
   }
 }
 
diff --git a/webrtc/video/receive_statistics_proxy.cc b/webrtc/video/receive_statistics_proxy.cc
index ded510a..b15ef68 100644
--- a/webrtc/video/receive_statistics_proxy.cc
+++ b/webrtc/video/receive_statistics_proxy.cc
@@ -77,6 +77,8 @@
   if (freq_offset_stats.num_samples > 0) {
     RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.RtpToNtpFreqOffsetInKhz",
                                freq_offset_stats.average);
+    LOG(LS_INFO) << "WebRTC.Video.RtpToNtpFreqOffsetInKhz, "
+                 << freq_offset_stats.ToString();
   }
 
   int qp = qp_counters_.vp8.Avg(kMinRequiredSamples);
diff --git a/webrtc/video/send_delay_stats.cc b/webrtc/video/send_delay_stats.cc
index 8ae0615..1c3fd2a 100644
--- a/webrtc/video/send_delay_stats.cc
+++ b/webrtc/video/send_delay_stats.cc
@@ -45,6 +45,7 @@
     AggregatedStats stats = it.second->GetStats();
     if (stats.num_samples >= kMinRequiredPeriodicSamples) {
       RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.SendDelayInMs", stats.average);
+      LOG(LS_INFO) << "WebRTC.Video.SendDelayInMs, " << stats.ToString();
     }
   }
 }
diff --git a/webrtc/video/stats_counter.cc b/webrtc/video/stats_counter.cc
index 9923ed2..b1c24ee 100644
--- a/webrtc/video/stats_counter.cc
+++ b/webrtc/video/stats_counter.cc
@@ -25,6 +25,15 @@
 const uint32_t kStreamId0 = 0;
 }  // namespace
 
+std::string AggregatedStats::ToString() const {
+  std::stringstream ss;
+  ss << "periodic_samples:" << num_samples << ", {";
+  ss << "min:" << min << ", ";
+  ss << "avg:" << average << ", ";
+  ss << "max:" << max << "}";
+  return ss.str();
+}
+
 // Class holding periodically computed metrics.
 class AggregatedCounter {
  public:
diff --git a/webrtc/video/stats_counter.h b/webrtc/video/stats_counter.h
index 08663f8..e84d73b 100644
--- a/webrtc/video/stats_counter.h
+++ b/webrtc/video/stats_counter.h
@@ -12,6 +12,7 @@
 #define WEBRTC_VIDEO_STATS_COUNTER_H_
 
 #include <memory>
+#include <string>
 
 #include "webrtc/base/constructormagic.h"
 #include "webrtc/typedefs.h"
@@ -31,6 +32,8 @@
 };
 
 struct AggregatedStats {
+  std::string ToString() const;
+
   int64_t num_samples = 0;
   int min = -1;
   int max = -1;
