@@ -45,11 +45,10 @@ std::string DataToString(const opencensus::stats::Distribution& data) {
4545 return output;
4646}
4747
48- } // namespace
49-
50- class StdoutExporter ::Handler
51- : public opencensus::stats::StatsExporter::Handler {
48+ class Handler : public opencensus ::stats::StatsExporter::Handler {
5249 public:
50+ Handler (std::ostream* stream) : stream_(stream) {}
51+
5352 void ExportViewData (
5453 const std::vector<std::pair<opencensus::stats::ViewDescriptor,
5554 opencensus::stats::ViewData>>& data) override ;
@@ -61,15 +60,11 @@ class StdoutExporter::Handler
6160 const opencensus::stats::ViewDescriptor& descriptor,
6261 absl::Time start_time, absl::Time end_time,
6362 const opencensus::stats::ViewData::DataMap<DataValueT>& data);
64- };
6563
66- // static
67- void StdoutExporter::Register () {
68- opencensus::stats::StatsExporter::RegisterPushHandler (
69- absl::make_unique<StdoutExporter::Handler>());
70- }
64+ std::ostream* stream_;
65+ };
7166
72- void StdoutExporter:: Handler::ExportViewData (
67+ void Handler::ExportViewData (
7368 const std::vector<std::pair<opencensus::stats::ViewDescriptor,
7469 opencensus::stats::ViewData>>& data) {
7570 for (const auto & datum : data) {
@@ -92,18 +87,17 @@ void StdoutExporter::Handler::ExportViewData(
9287}
9388
9489template <typename DataValueT>
95- void StdoutExporter:: Handler::ExportViewDataImpl (
90+ void Handler::ExportViewDataImpl (
9691 const opencensus::stats::ViewDescriptor& descriptor, absl::Time start_time,
9792 absl::Time end_time,
9893 const opencensus::stats::ViewData::DataMap<DataValueT>& data) {
9994 if (data.size () == 0 ) {
100- std::cout << absl::StrCat (" No data for view \" " , descriptor.name (),
101- " \" from " , absl::FormatTime (start_time),
102- " .\n\n " );
95+ *stream_ << absl::StrCat (" No data for view \" " , descriptor.name (),
96+ " \" from " , absl::FormatTime (start_time), " .\n\n " );
10397 return ;
10498 }
105- // Build a string so we can write it to cout in one shot to minimize crosstalk
106- // if multiple threads write to cout simultaneously.
99+ // Build a string so we can write it in one shot to minimize crosstalk if
100+ // multiple threads write to stream_ simultaneously.
107101 std::string output = absl::StrCat (" Data for view \" " , descriptor.name (),
108102 " \" from " , absl::FormatTime (start_time),
109103 " to " , absl::FormatTime (end_time), " :\n " );
@@ -116,7 +110,15 @@ void StdoutExporter::Handler::ExportViewDataImpl(
116110 absl::StrAppend (&output, DataToString (row.second ));
117111 }
118112 absl::StrAppend (&output, " \n " );
119- std::cout << output;
113+ *stream_ << output;
114+ }
115+
116+ } // namespace
117+
118+ // static
119+ void StdoutExporter::Register (std::ostream* stream) {
120+ opencensus::stats::StatsExporter::RegisterPushHandler (
121+ absl::make_unique<Handler>(stream));
120122}
121123
122124} // namespace stats
0 commit comments