diff options
author | Henrik Edin <henrik.edin@mongodb.com> | 2020-01-16 22:10:57 +0000 |
---|---|---|
committer | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2020-01-27 15:40:36 -0500 |
commit | 893126f80f2a43b9f5318e23d8878d85acdba87b (patch) | |
tree | f718e100b992db16481d62cc9a31caab40522c86 | |
parent | 7f5abac0250d152fc9cfa44effe45a842778b450 (diff) | |
download | mongo-893126f80f2a43b9f5318e23d8878d85acdba87b.tar.gz |
SERVER-45609 Allow early logging to stdout in shell when using logv2
-rw-r--r-- | src/mongo/shell/dbshell.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mongo/shell/dbshell.cpp b/src/mongo/shell/dbshell.cpp index a745cf31591..5561204f714 100644 --- a/src/mongo/shell/dbshell.cpp +++ b/src/mongo/shell/dbshell.cpp @@ -728,14 +728,22 @@ int _main(int argc, char* argv[], char** envp) { setupSignalHandlers(); setupSignals(); - logger::globalLogManager()->getGlobalDomain()->clearAppenders(); - logger::globalLogManager()->getGlobalDomain()->attachAppender( - std::make_unique<ShellConsoleAppender>( - std::make_unique<logger::MessageEventDetailsEncoder>())); - + // Log to stdout for any early logging before we re-configure the logger auto& lv2Manager = logv2::LogManager::global(); logv2::LogDomainGlobal::ConfigurationOptions lv2Config; - lv2Config.makeDisabled(); + if (logV2Enabled()) { + logger::globalLogManager()->getGlobalDomain()->clearAppenders(); + logger::globalLogManager()->getGlobalDomain()->attachAppender( + std::make_unique<logger::LogV2Appender<logger::MessageEventEphemeral>>( + &lv2Manager.getGlobalDomain())); + } else { + logger::globalLogManager()->getGlobalDomain()->clearAppenders(); + logger::globalLogManager()->getGlobalDomain()->attachAppender( + std::make_unique<ShellConsoleAppender>( + std::make_unique<logger::MessageEventDetailsEncoder>())); + + lv2Config.makeDisabled(); + } uassertStatusOK(lv2Manager.getGlobalDomainInternal().configure(lv2Config)); mongo::shell_utils::RecordMyLocation(argv[0]); @@ -788,6 +796,11 @@ int _main(int argc, char* argv[], char** envp) { consoleSink->locked_backend()->auto_flush(); + // Remove the initial config from above when setting this sink, otherwise we log everything + // twice. + lv2Config.makeDisabled(); + uassertStatusOK(lv2Manager.getGlobalDomainInternal().configure(lv2Config)); + boost::log::core::get()->add_sink(std::move(consoleSink)); } |