diff options
-rw-r--r-- | src/mongo/logv2/log_tag.h | 11 | ||||
-rw-r--r-- | src/mongo/shell/dbshell.cpp | 7 | ||||
-rw-r--r-- | src/mongo/shell/shell_utils_launcher.cpp | 10 |
3 files changed, 23 insertions, 5 deletions
diff --git a/src/mongo/logv2/log_tag.h b/src/mongo/logv2/log_tag.h index f0112d5f8fe..f88a66a60b2 100644 --- a/src/mongo/logv2/log_tag.h +++ b/src/mongo/logv2/log_tag.h @@ -49,8 +49,18 @@ public: // representing the logv1 plainShellOutput domain kPlainShell = 1 << 2, + + // allow logging while the shell is waiting for user input + kAllowDuringPromptingShell = 1 << 3, }; + friend Value operator|(Value a, Value b) { + return static_cast<Value>(static_cast<uint64_t>(a) | static_cast<uint64_t>(b)); + } + friend Value operator&(Value a, Value b) { + return static_cast<Value>(static_cast<uint64_t>(a) & static_cast<uint64_t>(b)); + } + LogTag() : _value(kNone) {} /* implicit */ LogTag(Value value) { _value = static_cast<uint64_t>(value); @@ -69,5 +79,6 @@ public: private: uint64_t _value; }; + } // namespace logv2 } // namespace mongo diff --git a/src/mongo/shell/dbshell.cpp b/src/mongo/shell/dbshell.cpp index 1c73f3dca4f..456faf068ad 100644 --- a/src/mongo/shell/dbshell.cpp +++ b/src/mongo/shell/dbshell.cpp @@ -185,8 +185,13 @@ private: class ShellBackend final : public boost::log::sinks::text_ostream_backend { public: void consume(boost::log::record_view const& rec, string_type const& formatted_message) { + using boost::log::extract; + auto lk = stdx::lock_guard(ShellConsoleAppender::mx); - if (!ShellConsoleAppender::loggingEnabled) + if (!ShellConsoleAppender::loggingEnabled && + !extract<logv2::LogTag>(logv2::attributes::tags(), rec) + .get() + .has(logv2::LogTag::kAllowDuringPromptingShell)) return; boost::log::sinks::text_ostream_backend::consume(rec, formatted_message); } diff --git a/src/mongo/shell/shell_utils_launcher.cpp b/src/mongo/shell/shell_utils_launcher.cpp index f9025622ba7..25a74af74ce 100644 --- a/src/mongo/shell/shell_utils_launcher.cpp +++ b/src/mongo/shell/shell_utils_launcher.cpp @@ -251,10 +251,12 @@ void ProgramOutputMultiplexer::appendLine(int port, std::ostringstream ss; sinkProgramOutput(_buffer); sinkProgramOutput(ss); - LOGV2_OPTIONS(4615640, - logv2::LogOptions(logv2::LogTag::kPlainShell, logv2::LogTruncation::Disabled), - "{message}", - "message"_attr = ss.str()); + LOGV2_OPTIONS( + 4615640, + logv2::LogOptions(logv2::LogTag::kPlainShell | logv2::LogTag::kAllowDuringPromptingShell, + logv2::LogTruncation::Disabled), + "{message}", + "message"_attr = ss.str()); } string ProgramOutputMultiplexer::str() const { |