diff options
author | Billy Donahue <billy.donahue@mongodb.com> | 2020-03-22 22:32:49 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-03-23 13:31:33 +0000 |
commit | 2e58eb2e8a79c4fb4d12465616fa89ab498eb05c (patch) | |
tree | 73bba1b90f30d2446c9c6390f3215de501669318 /src/mongo/db | |
parent | 5846d4b66cf0adb154dbe89c696a750bc0a1082c (diff) | |
download | mongo-2e58eb2e8a79c4fb4d12465616fa89ab498eb05c.tar.gz |
SERVER-46765 fix '--version' & '--sysinfo', which use kPlain logging
This reverts commit 79a8452b2a813b796059e5eab6c18f685283ce08.
with new spot fix: printCommandLineOpts when sending to log
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/db.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/log_process_details.cpp | 34 | ||||
-rw-r--r-- | src/mongo/db/log_process_details.h | 7 | ||||
-rw-r--r-- | src/mongo/db/mongod_options.cpp | 35 | ||||
-rw-r--r-- | src/mongo/db/server_options_server_helpers.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/server_options_server_helpers.h | 7 |
6 files changed, 58 insertions, 39 deletions
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp index b5588f4bbfe..2742b0666b0 100644 --- a/src/mongo/db/db.cpp +++ b/src/mongo/db/db.cpp @@ -326,7 +326,7 @@ ExitCode _initAndListen(ServiceContext* serviceContext, int listenPort) { VersionInfoInterface::instance().logTargetMinOS(); #endif - logProcessDetails(); + logProcessDetails(nullptr); serviceContext->setServiceEntryPoint(std::make_unique<ServiceEntryPointMongod>(serviceContext)); diff --git a/src/mongo/db/log_process_details.cpp b/src/mongo/db/log_process_details.cpp index 9d43247991a..f63401df6fd 100644 --- a/src/mongo/db/log_process_details.cpp +++ b/src/mongo/db/log_process_details.cpp @@ -33,6 +33,11 @@ #include "mongo/db/log_process_details.h" +#include <ostream> + +#include "mongo/bson/bsonobj.h" +#include "mongo/bson/bsonobjbuilder.h" +#include "mongo/bson/json.h" #include "mongo/db/repl/repl_set_config.h" #include "mongo/db/repl/replication_coordinator.h" #include "mongo/db/server_options.h" @@ -44,26 +49,35 @@ namespace mongo { +namespace { + bool is32bit() { return (sizeof(int*) == 4); } -void logProcessDetails() { - auto&& vii = VersionInfoInterface::instance(); - vii.logBuildInfo(); - - ProcessInfo p; - LOGV2( - 51765, "Operating system", "name"_attr = p.getOsName(), "version"_attr = p.getOsVersion()); +} // namespace +void logProcessDetails(std::ostream* os) { + auto&& vii = VersionInfoInterface::instance(); if (ProcessInfo::getMemSizeMB() < ProcessInfo::getSystemMemSizeMB()) { LOGV2_WARNING(20720, "Available memory is less than system memory", "availableMemSizeMB"_attr = ProcessInfo::getMemSizeMB(), "systemMemSizeMB"_attr = ProcessInfo::getSystemMemSizeMB()); } - - printCommandLineOpts(); + auto osInfo = BSONObjBuilder() + .append("name", ProcessInfo::getOsName()) + .append("version", ProcessInfo::getOsVersion()) + .obj(); + vii.logBuildInfo(os); + if (os) { + *os << format(FMT_STRING("Operating System: {}"), + tojson(osInfo, ExtendedRelaxedV2_0_0, true)) + << std::endl; + } else { + LOGV2(51765, "Operating System", "os"_attr = osInfo); + } + printCommandLineOpts(os); } void logProcessDetailsForLogRotate(ServiceContext* serviceContext) { @@ -89,7 +103,7 @@ void logProcessDetailsForLogRotate(ServiceContext* serviceContext) { } } - logProcessDetails(); + logProcessDetails(nullptr); } } // namespace mongo diff --git a/src/mongo/db/log_process_details.h b/src/mongo/db/log_process_details.h index d74fcc5fe52..677fea672bb 100644 --- a/src/mongo/db/log_process_details.h +++ b/src/mongo/db/log_process_details.h @@ -29,14 +29,17 @@ #pragma once +#include <iosfwd> + namespace mongo { class ServiceContext; /** - * Writes useful information about the running process to the diagnostic log on startup. + * Writes useful information about the running process. + * If `os` is nonnull, print to it, else to LOGV2. */ -void logProcessDetails(); +void logProcessDetails(std::ostream* os); /** * Writes useful information about the running process to diagnostic log diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp index c1926b20762..78a8befe022 100644 --- a/src/mongo/db/mongod_options.cpp +++ b/src/mongo/db/mongod_options.cpp @@ -101,23 +101,20 @@ void printMongodHelp(const moe::OptionSection& options) { }; namespace { -void sysRuntimeInfo() { + +void appendSysInfo(BSONObjBuilder* obj) { + auto o = BSONObjBuilder(obj->subobjStart("sysinfo")); #if defined(_SC_PAGE_SIZE) - LOGV2(20873, - " page size: {int_sysconf_SC_PAGE_SIZE}", - "int_sysconf_SC_PAGE_SIZE"_attr = (int)sysconf(_SC_PAGE_SIZE)); + o.append("_SC_PAGE_SIZE", (long long)sysconf(_SC_PAGE_SIZE)); #endif #if defined(_SC_PHYS_PAGES) - LOGV2(20874, - " _SC_PHYS_PAGES: {sysconf_SC_PHYS_PAGES}", - "sysconf_SC_PHYS_PAGES"_attr = sysconf(_SC_PHYS_PAGES)); + o.append("_SC_PHYS_PAGES", (long long)sysconf(_SC_PHYS_PAGES)); #endif #if defined(_SC_AVPHYS_PAGES) - LOGV2(20875, - " _SC_AVPHYS_PAGES: {sysconf_SC_AVPHYS_PAGES}", - "sysconf_SC_AVPHYS_PAGES"_attr = sysconf(_SC_AVPHYS_PAGES)); + o.append("_SC_AVPHYS_PAGES", (long long)sysconf(_SC_AVPHYS_PAGES)); #endif } + } // namespace bool handlePreValidationMongodOptions(const moe::Environment& params, @@ -126,24 +123,16 @@ bool handlePreValidationMongodOptions(const moe::Environment& params, printMongodHelp(moe::startupOptions); return false; } - - auto setPlainLogFormat = []() { - auto& globalDomain = logv2::LogManager::global().getGlobalDomainInternal(); - logv2::LogDomainGlobal::ConfigurationOptions config = globalDomain.config(); - config.format = logv2::LogFormat::kPlain; - invariant(globalDomain.configure(config).isOK()); - }; - if (params.count("version") && params["version"].as<bool>() == true) { - setPlainLogFormat(); auto&& vii = VersionInfoInterface::instance(); - LOGV2(20876, "{mongodVersion_vii}", "mongodVersion_vii"_attr = mongodVersion(vii)); - vii.logBuildInfo(); + std::cout << mongodVersion(vii) << std::endl; + vii.logBuildInfo(&std::cout); return false; } if (params.count("sysinfo") && params["sysinfo"].as<bool>() == true) { - setPlainLogFormat(); - sysRuntimeInfo(); + BSONObjBuilder obj; + appendSysInfo(&obj); + std::cout << tojson(obj.done(), ExtendedRelaxedV2_0_0, true) << std::endl; return false; } diff --git a/src/mongo/db/server_options_server_helpers.cpp b/src/mongo/db/server_options_server_helpers.cpp index 878fa85a40f..0d237dfe7bd 100644 --- a/src/mongo/db/server_options_server_helpers.cpp +++ b/src/mongo/db/server_options_server_helpers.cpp @@ -37,10 +37,12 @@ #include <boost/algorithm/string/trim.hpp> #include <boost/filesystem.hpp> #include <boost/filesystem/operations.hpp> +#include <fmt/format.h> #include <ios> #include <iostream> #include "mongo/base/status.h" +#include "mongo/bson/json.h" #include "mongo/bson/util/builder.h" #include "mongo/config.h" #include "mongo/db/server_options.h" @@ -113,8 +115,14 @@ Status setParsedOpts(const moe::Environment& params) { } } // namespace -void printCommandLineOpts() { - LOGV2(21951, "Options set by command line", "options"_attr = serverGlobalParams.parsedOpts); +void printCommandLineOpts(std::ostream* os) { + if (os) { + *os << format(FMT_STRING("Options set by command line: {}"), + tojson(serverGlobalParams.parsedOpts, ExtendedRelaxedV2_0_0, true)) + << std::endl; + } else { + LOGV2(21951, "Options set by command line", "options"_attr = serverGlobalParams.parsedOpts); + } } Status validateServerOptions(const moe::Environment& params) { diff --git a/src/mongo/db/server_options_server_helpers.h b/src/mongo/db/server_options_server_helpers.h index 51a59315554..5a243ab5dee 100644 --- a/src/mongo/db/server_options_server_helpers.h +++ b/src/mongo/db/server_options_server_helpers.h @@ -29,6 +29,8 @@ #pragma once +#include <iosfwd> + #include "mongo/base/status.h" #include "mongo/util/options_parser/environment.h" #include "mongo/util/options_parser/option_section.h" @@ -66,6 +68,9 @@ Status setupServerOptions(const std::vector<std::string>& args); */ Status storeServerOptions(const optionenvironment::Environment& params); -void printCommandLineOpts(); +/** + * Write to `os`, or to LOGV2 if null. + */ +void printCommandLineOpts(std::ostream* os); } // namespace mongo |