summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2020-02-13 16:55:02 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-02-14 23:22:38 +0000
commit7a91c2823d5c0f94ad0d0e6bb5e830df0276da2a (patch)
treef16c5131af6c8059aee67c7d23cdfd03ae1defe2
parent05feebc53d0ad88574cfba9bbc7640d2244f9756 (diff)
downloadmongo-7a91c2823d5c0f94ad0d0e6bb5e830df0276da2a.tar.gz
SERVER-45138 Add MONGO_CONFIG_JSON_LOG_DEFAULT define to use JSON logs by default
-rw-r--r--etc/evergreen.yml98
-rw-r--r--jstests/libs/logv2_helpers.js19
-rw-r--r--site_scons/mongo/generators.py6
-rw-r--r--src/mongo/db/curop.cpp2
-rw-r--r--src/mongo/db/repl/oplog_applier_impl.cpp2
-rw-r--r--src/mongo/db/s/transaction_coordinator.cpp2
-rw-r--r--src/mongo/db/transaction_participant.cpp2
-rw-r--r--src/mongo/logv2/log_domain_global.cpp6
-rw-r--r--src/mongo/s/transaction_router.cpp2
-rw-r--r--src/mongo/shell/dbshell.cpp8
-rw-r--r--src/mongo/util/log.cpp8
-rw-r--r--src/mongo/util/log_global_settings.h2
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);
/**