diff options
author | Gabriel Russell <gabriel.russell@mongodb.com> | 2019-10-16 16:11:00 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-10-16 16:11:00 +0000 |
commit | 81e1eb03f722595bc321ed2322ad14901887ab11 (patch) | |
tree | 4bd45a10b11c904c2a67fe3c3475fd4f010416d7 /src/mongo/logger | |
parent | 9bee42b1be57065f6ef963e6aa535a66a39e04f2 (diff) | |
download | mongo-81e1eb03f722595bc321ed2322ad14901887ab11.tar.gz |
SERVER-43746 logv2 Tee and RamLog
Diffstat (limited to 'src/mongo/logger')
-rw-r--r-- | src/mongo/logger/logstream_builder.cpp | 5 | ||||
-rw-r--r-- | src/mongo/logger/logv2_appender.h | 24 | ||||
-rw-r--r-- | src/mongo/logger/message_event.h | 7 | ||||
-rw-r--r-- | src/mongo/logger/ramlog.h | 4 |
4 files changed, 39 insertions, 1 deletions
diff --git a/src/mongo/logger/logstream_builder.cpp b/src/mongo/logger/logstream_builder.cpp index 5b6115b4cfb..c07c29c3fe5 100644 --- a/src/mongo/logger/logstream_builder.cpp +++ b/src/mongo/logger/logstream_builder.cpp @@ -33,9 +33,11 @@ #include <memory> +#include "mongo/base/checked_cast.h" #include "mongo/base/init.h" #include "mongo/base/status.h" #include "mongo/logger/message_event_utf8_encoder.h" +#include "mongo/logger/ramlog.h" #include "mongo/logger/tee.h" #include "mongo/util/assert_util.h" // TODO: remove apple dep for this in threadlocal.h #include "mongo/util/time_support.h" @@ -94,6 +96,9 @@ LogstreamBuilder::~LogstreamBuilder() { MessageEventEphemeral message( Date_t::now(), _severity, _component, _contextName, _baseMessage); message.setIsTruncatable(_isTruncatable); + if (_tee) { + message.setTeeName(checked_cast<RamLog*>(_tee)->getName()); + } _domain->append(message).transitional_ignore(); if (_tee) { _os->str(""); diff --git a/src/mongo/logger/logv2_appender.h b/src/mongo/logger/logv2_appender.h index b94401877ee..2076fa291a4 100644 --- a/src/mongo/logger/logv2_appender.h +++ b/src/mongo/logger/logv2_appender.h @@ -35,10 +35,29 @@ #include "mongo/logv2/log_component.h" #include "mongo/logv2/log_detail.h" #include "mongo/logv2/log_domain.h" +#include "mongo/logv2/log_tag.h" namespace mongo { namespace logger { + +namespace { + +auto findTeeTag(StringData teeName) { + static constexpr std::pair<StringData, logv2::LogTag::Value> kTees[] = { + {"rs"_sd, logv2::LogTag::kRS}, + {"startupWarnings"_sd, logv2::LogTag::kStartupWarnings}, + }; + if (teeName.empty()) + return logv2::LogTag::kNone; + for (auto&& e : kTees) + if (e.first == teeName) + return e.second; + MONGO_UNREACHABLE; +} + +} // namespace + /** * Appender for writing to a logv2 domain */ @@ -51,6 +70,9 @@ public: explicit LogV2Appender(logv2::LogDomain* domain) : _domain(domain) {} Status append(const Event& event) override { + + auto logTagValue = findTeeTag(event.getTeeName()); + logv2::detail::doLog( // We need to cast from the v1 logging severity to the equivalent v2 severity @@ -62,7 +84,7 @@ public: static_cast<std::underlying_type_t<LogComponent::Value>>( static_cast<LogComponent::Value>(event.getComponent())))), _domain, - logv2::LogTag{}}, + logv2::LogTag{logTagValue}}, // stable id doesn't exist in logv1 StringData{}, diff --git a/src/mongo/logger/message_event.h b/src/mongo/logger/message_event.h index 684ac459576..e767a71ecf7 100644 --- a/src/mongo/logger/message_event.h +++ b/src/mongo/logger/message_event.h @@ -64,11 +64,17 @@ public: _contextName(contextName), _message(message) {} + void setTeeName(StringData tee) { + _teeName = tee; + } MessageEventEphemeral& setIsTruncatable(bool value) { _isTruncatable = value; return *this; } + StringData getTeeName() const { + return _teeName; + } Date_t getDate() const { return _date; } @@ -95,6 +101,7 @@ private: StringData _contextName; StringData _message; bool _isTruncatable = true; + StringData _teeName; }; } // namespace logger diff --git a/src/mongo/logger/ramlog.h b/src/mongo/logger/ramlog.h index 7a3ff8cdaaa..e737663083c 100644 --- a/src/mongo/logger/ramlog.h +++ b/src/mongo/logger/ramlog.h @@ -93,6 +93,10 @@ public: */ void write(const std::string& str); + const std::string& getName() const { + return _name; + }; + /** * Empties out the RamLog. */ |