summaryrefslogtreecommitdiff
path: root/src/mongo/logger
diff options
context:
space:
mode:
authorGabriel Russell <gabriel.russell@mongodb.com>2019-10-16 16:11:00 +0000
committerevergreen <evergreen@mongodb.com>2019-10-16 16:11:00 +0000
commit81e1eb03f722595bc321ed2322ad14901887ab11 (patch)
tree4bd45a10b11c904c2a67fe3c3475fd4f010416d7 /src/mongo/logger
parent9bee42b1be57065f6ef963e6aa535a66a39e04f2 (diff)
downloadmongo-81e1eb03f722595bc321ed2322ad14901887ab11.tar.gz
SERVER-43746 logv2 Tee and RamLog
Diffstat (limited to 'src/mongo/logger')
-rw-r--r--src/mongo/logger/logstream_builder.cpp5
-rw-r--r--src/mongo/logger/logv2_appender.h24
-rw-r--r--src/mongo/logger/message_event.h7
-rw-r--r--src/mongo/logger/ramlog.h4
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.
*/