diff options
author | Henrik Edin <henrik.edin@mongodb.com> | 2020-02-13 16:55:02 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-02-14 23:22:38 +0000 |
commit | 7a91c2823d5c0f94ad0d0e6bb5e830df0276da2a (patch) | |
tree | f16c5131af6c8059aee67c7d23cdfd03ae1defe2 | |
parent | 05feebc53d0ad88574cfba9bbc7640d2244f9756 (diff) | |
download | mongo-7a91c2823d5c0f94ad0d0e6bb5e830df0276da2a.tar.gz |
SERVER-45138 Add MONGO_CONFIG_JSON_LOG_DEFAULT define to use JSON logs by default
-rw-r--r-- | etc/evergreen.yml | 98 | ||||
-rw-r--r-- | jstests/libs/logv2_helpers.js | 19 | ||||
-rw-r--r-- | site_scons/mongo/generators.py | 6 | ||||
-rw-r--r-- | src/mongo/db/curop.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_applier_impl.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/transaction_coordinator.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/transaction_participant.cpp | 2 | ||||
-rw-r--r-- | src/mongo/logv2/log_domain_global.cpp | 6 | ||||
-rw-r--r-- | src/mongo/s/transaction_router.cpp | 2 | ||||
-rw-r--r-- | src/mongo/shell/dbshell.cpp | 8 | ||||
-rw-r--r-- | src/mongo/util/log.cpp | 8 | ||||
-rw-r--r-- | src/mongo/util/log_global_settings.h | 2 |
12 files changed, 47 insertions, 110 deletions
diff --git a/etc/evergreen.yml b/etc/evergreen.yml index e70dcae3223..9107d7d4fed 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -555,7 +555,7 @@ functions: ${activate_virtualenv} bin_ver=$($python -c "import yaml; print(yaml.safe_load(open('compile_expansions.yml'))['version']);" | tr -d '[ \r\n]') # Due to SERVER-23810, we cannot use $mongo_binary --quiet --nodb --eval "version();" - mongo_ver=$($mongo_binary --version | perl -pe '/version v(.*)$/; $_ = $1;' | tr -d '[ \r\n]') + mongo_ver=$($mongo_binary --version | perl -pe '/version v([^\"]*)(\"}})?$/; $_ = $1;' | tr -d '[ \r\n]') # The versions must match if [ "$bin_ver" != "$mongo_ver" ]; then echo "The mongo version is $mongo_ver, expected version is $bin_ver" @@ -11497,98 +11497,6 @@ buildvariants: - name: .ssl - name: .updatefuzzer -- name: enterprise-rhel-62-64-bit-logv2 - display_name: "~ Enterprise RHEL 6.2 (logv2)" - modules: - - enterprise - run_on: - - rhel62-large - batchtime: 1440 # 1 day - expansions: - additional_targets: archive-mongocryptd archive-mongocryptd-debug - mh_target: archive-mh archive-mh-debug - compile_flags: --ssl MONGO_DISTMOD=rhel62 -j$(grep -c ^processor /proc/cpuinfo) --variables-files=etc/scons/mongodbtoolchain_v3_gcc.vars CPPDEFINES=MONGO_CONFIG_LOGV2_DEFAULT - multiversion_platform: rhel62 - multiversion_edition: enterprise - has_packages: true - packager_script: packager_enterprise.py - packager_arch: x86_64 - packager_distro: rhel62 - repo_edition: enterprise - scons_cache_scope: shared - jstestfuzz_num_generated_files: 40 - jstestfuzz_concurrent_num_files: 10 - target_resmoke_time: 10 - large_distro_name: rhel62-large - burn_in_tag_buildvariants: enterprise-rhel-62-64-bit-majority-read-concern-off enterprise-rhel-62-64-bit-inmem linux-64-duroff - tasks: - - name: compile_all_run_unittests_TG - distros: - - rhel62-large - - name: burn_in_tests_gen - - name: burn_in_tests_multiversion_gen - - name: .aggfuzzer - - name: .aggregation - - name: audit - - name: .auth - - name: burn_in_tags_gen - distros: - - centos6-perf - - name: buildscripts_test - - name: .causally_consistent !.sharding - - name: .change_streams - - name: .misc_js - - name: .concurrency !.large !.ubsan !.no_txns !.debug_only - - name: .concurrency .large !.ubsan !.no_txns !.debug_only - distros: - - rhel62-large - - name: disk_wiredtiger - - name: .encrypt - - name: idl_tests - - name: initial_sync_fuzzer_gen - - name: .integration - distros: - - rhel62-large - - name: .jscore .common - - name: jsCore_minimum_batch_size - - name: jsCore_op_query - - name: jsCore_txns_large_txns_format - - name: jsonSchema - - name: .jstestfuzz - - name: .logical_session_cache - - name: .multi_shard - - name: multi_stmt_txn_jscore_passthrough_with_migration_gen - - name: multiversion_gen - - name: .query_fuzzer - - name: .read_write_concern .large - distros: - - rhel62-large - - name: .read_write_concern !.large - - name: .replica_sets !.encrypt !.auth - distros: - - rhel62-large - - name: retryable_writes_jscore_passthrough_gen - - name: retryable_writes_jscore_stepdown_passthrough - distros: - - rhel62-large - - name: .read_only - - name: .rollbackfuzzer - - name: sasl - - name: search - - name: search_auth - - name: search_ssl - - name: session_jscore_passthrough - - name: .sharding .jscore !.wo_snapshot !.multi_stmt - - name: .sharding .txns - - name: .sharding .common - - name: sharded_multi_stmt_txn_jscore_passthrough - distros: - - rhel62-large - - name: snmp - - name: .stitch - - name: .updatefuzzer - - name: secondary_reads_passthrough_gen - # Builder with JSON log format, not needed when JSON is default format. See: # https://jira.mongodb.org/browse/SERVER-45138 - name: enterprise-rhel-62-64-bit-logv2-json @@ -11601,7 +11509,7 @@ buildvariants: expansions: additional_targets: archive-mongocryptd archive-mongocryptd-debug mh_target: archive-mh archive-mh-debug - compile_flags: --ssl MONGO_DISTMOD=rhel62 -j$(grep -c ^processor /proc/cpuinfo) --variables-files=etc/scons/mongodbtoolchain_v3_gcc.vars CPPDEFINES=MONGO_CONFIG_LOGV2_DEFAULT + compile_flags: --ssl MONGO_DISTMOD=rhel62 -j$(grep -c ^processor /proc/cpuinfo) --variables-files=etc/scons/mongodbtoolchain_v3_gcc.vars CPPDEFINES=MONGO_CONFIG_JSON_LOG_DEFAULT multiversion_platform: rhel62 multiversion_edition: enterprise has_packages: true @@ -11616,7 +11524,7 @@ buildvariants: large_distro_name: rhel62-large burn_in_tag_buildvariants: enterprise-rhel-62-64-bit-majority-read-concern-off enterprise-rhel-62-64-bit-inmem linux-64-duroff # This builder is the same as the regular logv2 builder defined above this. These flags are only difference - test_flags: --logFormat=json --excludeWithAnyTags=requires_text_logs + test_flags: --excludeWithAnyTags=requires_text_logs tasks: - name: compile_all_run_unittests_TG distros: diff --git a/jstests/libs/logv2_helpers.js b/jstests/libs/logv2_helpers.js index 0247e6e83d8..68261ed1c89 100644 --- a/jstests/libs/logv2_helpers.js +++ b/jstests/libs/logv2_helpers.js @@ -1,26 +1,29 @@ // logv2_helper.js function isJsonLogNoConn() { + const jsonDefault = + getBuildInfo().buildEnvironment.cppdefines.indexOf("MONGO_CONFIG_JSON_LOG_DEFAULT") >= 0; if (typeof TestData !== 'undefined' && typeof TestData.logFormat !== 'undefined') { - return TestData["logFormat"] == "json"; + return TestData["logFormat"] == "json" || (jsonDefault && TestData["logFormat"] != "text"); } - return false; + return jsonDefault; } function isJsonLog(conn) { + const jsonDefault = + getBuildInfo().buildEnvironment.cppdefines.indexOf("MONGO_CONFIG_JSON_LOG_DEFAULT") >= 0; + if (typeof TestData !== 'undefined' && typeof TestData.logFormat !== 'undefined') { - return TestData["logFormat"] == "json"; + return TestData["logFormat"] == "json" || (jsonDefault && TestData["logFormat"] != "text"); } const opts = assert.commandWorked(conn.getDB("admin").runCommand({"getCmdLineOpts": 1})); - - print(tojson(opts)); - const parsed = opts["parsed"]; if (parsed.hasOwnProperty("systemLog") && parsed["systemLog"].hasOwnProperty("logFormat")) { - return parsed["systemLog"]["logFormat"] == "json"; + return parsed["systemLog"]["logFormat"] == "json" || + (jsonDefault && parsed["systemLog"]["logFormat"] != "text"); } - return false; + return jsonDefault; } diff --git a/site_scons/mongo/generators.py b/site_scons/mongo/generators.py index 052f18d3a0a..b60c1fa3b00 100644 --- a/site_scons/mongo/generators.py +++ b/site_scons/mongo/generators.py @@ -69,6 +69,12 @@ def default_buildinfo_environment_data(): True, False, ), + ( + 'cppdefines', + '$CPPDEFINES', + True, + False, + ), ) diff --git a/src/mongo/db/curop.cpp b/src/mongo/db/curop.cpp index 6842bec55fa..385b53141d1 100644 --- a/src/mongo/db/curop.cpp +++ b/src/mongo/db/curop.cpp @@ -490,7 +490,7 @@ bool CurOp::completeAndLogOperation(OperationContext* opCtx, _debug.prepareConflictDurationMillis = duration_cast<Milliseconds>(prepareConflictDurationMicros); - if (serverGlobalParams.logFormat == logv2::LogFormat::kJson) { + if (logV2IsJson(serverGlobalParams.logFormat)) { logv2::DynamicAttributes attr; _debug.report(opCtx, (lockerInfo ? &lockerInfo->stats : nullptr), &attr); LOGV2(51803, "slow query", attr); diff --git a/src/mongo/db/repl/oplog_applier_impl.cpp b/src/mongo/db/repl/oplog_applier_impl.cpp index e801962d0df..6d9586b8f0c 100644 --- a/src/mongo/db/repl/oplog_applier_impl.cpp +++ b/src/mongo/db/repl/oplog_applier_impl.cpp @@ -113,7 +113,7 @@ Status finishAndLogApply(OperationContext* opCtx, Milliseconds(opDuration), Milliseconds(serverGlobalParams.slowMS)) .first) { - if (serverGlobalParams.logFormat == logv2::LogFormat::kJson) { + if (logV2IsJson(serverGlobalParams.logFormat)) { logv2::DynamicAttributes attrs; diff --git a/src/mongo/db/s/transaction_coordinator.cpp b/src/mongo/db/s/transaction_coordinator.cpp index f3a6696db93..03c21e4ce5f 100644 --- a/src/mongo/db/s/transaction_coordinator.cpp +++ b/src/mongo/db/s/transaction_coordinator.cpp @@ -422,7 +422,7 @@ void TransactionCoordinator::_done(Status status) { void TransactionCoordinator::_logSlowTwoPhaseCommit( const txn::CoordinatorCommitDecision& decision) { - if (serverGlobalParams.logFormat == logv2::LogFormat::kJson) { + if (logV2IsJson(serverGlobalParams.logFormat)) { logv2::DynamicAttributes attrs; BSONObjBuilder parametersBuilder; diff --git a/src/mongo/db/transaction_participant.cpp b/src/mongo/db/transaction_participant.cpp index 26162528a7c..c8180467c20 100644 --- a/src/mongo/db/transaction_participant.cpp +++ b/src/mongo/db/transaction_participant.cpp @@ -1989,7 +1989,7 @@ void TransactionParticipant::Participant::_logSlowTransaction( opDuration, Milliseconds(serverGlobalParams.slowMS)) .first) { - if (serverGlobalParams.logFormat == logv2::LogFormat::kJson) { + if (logV2IsJson(serverGlobalParams.logFormat)) { logv2::DynamicAttributes attr; _transactionInfoForLog(opCtx, lockStats, terminationCause, readConcernArgs, &attr); LOGV2_OPTIONS(51802, {logv2::LogComponent::kTransaction}, "transaction", attr); diff --git a/src/mongo/logv2/log_domain_global.cpp b/src/mongo/logv2/log_domain_global.cpp index 2788cd8aca4..6b9603cc82f 100644 --- a/src/mongo/logv2/log_domain_global.cpp +++ b/src/mongo/logv2/log_domain_global.cpp @@ -29,6 +29,7 @@ #include "log_domain_global.h" +#include "mongo/config.h" #include "mongo/logv2/component_settings_filter.h" #include "mongo/logv2/composite_backend.h" #include "mongo/logv2/console.h" @@ -174,11 +175,16 @@ Status LogDomainGlobal::Impl::configure(LogDomainGlobal::ConfigurationOptions co }; switch (options.format) { +#if !defined(MONGO_CONFIG_JSON_LOG_DEFAULT) case LogFormat::kDefault: +#endif case LogFormat::kText: setFormatters( [&] { return TextFormatter(options.maxAttributeSizeKB, options.timestampFormat); }); break; +#if defined(MONGO_CONFIG_JSON_LOG_DEFAULT) + case LogFormat::kDefault: +#endif case LogFormat::kJson: setFormatters( [&] { return JSONFormatter(options.maxAttributeSizeKB, options.timestampFormat); }); diff --git a/src/mongo/s/transaction_router.cpp b/src/mongo/s/transaction_router.cpp index 2656c0b7b66..21d8d513009 100644 --- a/src/mongo/s/transaction_router.cpp +++ b/src/mongo/s/transaction_router.cpp @@ -1333,7 +1333,7 @@ BSONObj TransactionRouter::Router::_commitWithRecoveryToken(OperationContext* op void TransactionRouter::Router::_logSlowTransaction(OperationContext* opCtx, TerminationCause terminationCause) const { - if (serverGlobalParams.logFormat == logv2::LogFormat::kJson) { + if (logV2IsJson(serverGlobalParams.logFormat)) { logv2::DynamicAttributes attrs; BSONObjBuilder parametersBuilder; diff --git a/src/mongo/shell/dbshell.cpp b/src/mongo/shell/dbshell.cpp index 992e8a2337d..f00f55b3c93 100644 --- a/src/mongo/shell/dbshell.cpp +++ b/src/mongo/shell/dbshell.cpp @@ -792,8 +792,12 @@ int _main(int argc, char* argv[], char** envp) { auto consoleSink = boost::make_shared<boost::log::sinks::synchronous_sink<ShellBackend>>(); consoleSink->set_filter(logv2::ComponentSettingsFilter(lv2Manager.getGlobalDomain(), lv2Manager.getGlobalSettings())); - consoleSink->set_formatter( - ShellFormatter(shellGlobalParams.logFormat == logv2::LogFormat::kJson)); +#if defined(MONGO_CONFIG_JSON_LOG_DEFAULT) + bool isJson = shellGlobalParams.logFormat != logv2::LogFormat::kText; +#else + bool isJson = shellGlobalParams.logFormat == logv2::LogFormat::kJson; +#endif + consoleSink->set_formatter(ShellFormatter(isJson)); consoleSink->locked_backend()->add_stream( boost::shared_ptr<std::ostream>(&logv2::Console::out(), boost::null_deleter())); diff --git a/src/mongo/util/log.cpp b/src/mongo/util/log.cpp index a60fd216972..41716f78015 100644 --- a/src/mongo/util/log.cpp +++ b/src/mongo/util/log.cpp @@ -66,6 +66,14 @@ bool logV2Enabled() { return _logV2Enabled; } +bool logV2IsJson(logv2::LogFormat format) { + return format == logv2::LogFormat::kJson +#if defined(MONGO_CONFIG_JSON_LOG_DEFAULT) + || format == logv2::LogFormat::kDefault +#endif + ; +} + void logV2Set(bool setting) { _logV2Enabled = setting; } diff --git a/src/mongo/util/log_global_settings.h b/src/mongo/util/log_global_settings.h index 79e3f177580..ef0a1c022dd 100644 --- a/src/mongo/util/log_global_settings.h +++ b/src/mongo/util/log_global_settings.h @@ -36,11 +36,13 @@ #include "mongo/logger/logger.h" #include "mongo/logv2/log_component.h" #include "mongo/logv2/log_component_settings.h" +#include "mongo/logv2/log_format.h" #include "mongo/logv2/log_manager.h" namespace mongo { bool logV2Enabled(); +bool logV2IsJson(logv2::LogFormat format); void logV2Set(bool setting); /** |