From 473dc1b0cf6914ec8e7a08168c433c8e2c2eb025 Mon Sep 17 00:00:00 2001 From: Helge Norberg Date: Thu, 3 Dec 2015 11:21:22 +0100 Subject: [PATCH] Write timestamp, thread and severity on each line in a multiline log statement, not only the first. --- common/log.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/common/log.cpp b/common/log.cpp index 3b857caa5..8ae7c35bb 100644 --- a/common/log.cpp +++ b/common/log.cpp @@ -97,7 +97,7 @@ public: template void write(Stream& out, const Val& value) { - std::string to_string = boost::lexical_cast(value); + std::wstring to_string = boost::lexical_cast(value); int length = static_cast(to_string.size()); int read_width; @@ -118,18 +118,24 @@ void my_formatter(bool print_all_characters, const boost::log::record_view& rec, static column_writer severity_column(7); namespace expr = boost::log::expressions; - append_timestamp(strm); + std::wstringstream pre_message_stream; + append_timestamp(pre_message_stream); + thread_id_column.write(pre_message_stream, boost::log::extract("ThreadID", rec).get().native_id()); + severity_column.write(pre_message_stream, boost::log::extract("Severity", rec)); - thread_id_column.write(strm, boost::log::extract("ThreadID", rec).get().native_id()); - severity_column.write(strm, boost::log::extract("Severity", rec)); + auto pre_message = pre_message_stream.str(); + + strm << pre_message; + + auto line_break_replacement = L"\n" + pre_message; if (print_all_characters) { - strm << rec[expr::message]; + strm << boost::replace_all_copy(rec[expr::message].get(), "\n", line_break_replacement); } else { - strm << replace_nonprintable_copy(rec[expr::message].get(), L'?'); + strm << boost::replace_all_copy(replace_nonprintable_copy(rec[expr::message].get(), L'?'), L"\n", line_break_replacement); } } -- 2.39.2