aboutsummaryrefslogtreecommitdiff
path: root/src/utility/logger.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/utility/logger.cc')
-rw-r--r--src/utility/logger.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/utility/logger.cc b/src/utility/logger.cc
new file mode 100644
index 0000000..cb5c79a
--- /dev/null
+++ b/src/utility/logger.cc
@@ -0,0 +1,21 @@
+#include "logger.h"
+
+namespace utility {
+
+// Forward the contents of a given standard output stream to the log target
+//
+// While `this->stream_ << stream.rdbuf()` would be more effective it sadly
+// does not work with `boost::process::pistream` due to a broken pipe error
+// in conjunction with the required `boost::process::capture_stream` context
+// flag.
+//
+void Logger::forward(boost::process::pistream& stream) {
+ std::lock_guard<std::mutex> guard(this->write_mutex_);
+
+ this->stream_ << std::string(
+ (std::istreambuf_iterator<char>(stream)),
+ (std::istreambuf_iterator<char>())
+ );
+}
+
+}