summaryrefslogtreecommitdiff
path: root/src/mongo/logger/log_component.cpp
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2014-07-16 12:35:13 -0400
committerBenety Goh <benety@mongodb.com>2014-07-29 17:42:21 -0400
commitc91a2c3392fc95be3ed07ba98a4d98b4db754b58 (patch)
tree255115ae0f8391766ca75441b30225f6a4194d34 /src/mongo/logger/log_component.cpp
parenta0dcb4026b3f1171b4124e2666cf71460d023bb1 (diff)
downloadmongo-c91a2c3392fc95be3ed07ba98a4d98b4db754b58.tar.gz
SERVER-4217 updated detailed log format to include log severity and component name.
Log severity is logged with a single capital letter. F - Severe E - Error W - Warning I - Info and Debug Level 0 D - All debug levels > 0 Component name is logged in upper-case padded with trailing spaces to fit within 8 characters.
Diffstat (limited to 'src/mongo/logger/log_component.cpp')
-rw-r--r--src/mongo/logger/log_component.cpp65
1 files changed, 50 insertions, 15 deletions
diff --git a/src/mongo/logger/log_component.cpp b/src/mongo/logger/log_component.cpp
index 349d0d6fd18..a7358c7f180 100644
--- a/src/mongo/logger/log_component.cpp
+++ b/src/mongo/logger/log_component.cpp
@@ -43,6 +43,14 @@ namespace {
// Lazily evaluated in LogComponent::getDottedName().
std::string _dottedNames[LogComponent::kNumLogComponents+1];
+ /**
+ * Returns StringData created from a string literal
+ */
+ template<size_t N>
+ StringData createStringData(const char (&val)[N]) {
+ return StringData(val, StringData::LiteralTag());
+ }
+
//
// Fully initialize _dottedNames before we enter multithreaded execution.
//
@@ -77,26 +85,30 @@ std::string _dottedNames[LogComponent::kNumLogComponents+1];
case kNumLogComponents: return kNumLogComponents;
default: return kDefault;
}
- invariant(0);
+ invariant(false);
}
- std::string LogComponent::getShortName() const {
+ StringData LogComponent::toStringData() const {
switch (_value) {
- case kDefault: return "default";
- case kAccessControl: return "accessControl";
- case kCommands: return "commands";
- case kIndexing: return "indexing";
- case kNetworking: return "networking";
- case kQuery: return "query";
- case kReplication: return "replication";
- case kSharding: return "sharding";
- case kStorage: return "storage";
- case kJournaling: return "journaling";
- case kWrites: return "writes";
- case kNumLogComponents: return "total";
+ case kDefault: return createStringData("default");
+ case kAccessControl: return createStringData("accessControl");
+ case kCommands: return createStringData("commands");
+ case kIndexing: return createStringData("indexing");
+ case kNetworking: return createStringData("networking");
+ case kQuery: return createStringData("query");
+ case kReplication: return createStringData("replication");
+ case kSharding: return createStringData("sharding");
+ case kStorage: return createStringData("storage");
+ case kJournaling: return createStringData("journaling");
+ case kWrites: return createStringData("writes");
+ case kNumLogComponents: return createStringData("total");
// No default. Compiler should complain if there's a log component that's not handled.
}
- invariant(0);
+ invariant(false);
+ }
+
+ std::string LogComponent::getShortName() const {
+ return toStringData().toString();
}
std::string LogComponent::getDottedName() const {
@@ -119,5 +131,28 @@ std::string _dottedNames[LogComponent::kNumLogComponents+1];
return _dottedNames[_value];
}
+ StringData LogComponent::getNameForLog() const {
+ switch (_value) {
+ case kDefault: return createStringData(" ");
+ case kAccessControl: return createStringData("ACCESS ");
+ case kCommands: return createStringData("COMMANDS");
+ case kIndexing: return createStringData("INDEXING");
+ case kNetworking: return createStringData("NETWORK ");
+ case kQuery: return createStringData("QUERY ");
+ case kReplication: return createStringData("REPLSETS");
+ case kSharding: return createStringData("SHARDING");
+ case kStorage: return createStringData("STORAGE ");
+ case kJournaling: return createStringData("JOURNAL ");
+ case kWrites: return createStringData("WRITES ");
+ case kNumLogComponents: return createStringData("TOTAL ");
+ // No default. Compiler should complain if there's a log component that's not handled.
+ }
+ invariant(false);
+ }
+
+ std::ostream& operator<<(std::ostream& os, LogComponent component) {
+ return os << component.getNameForLog();
+ }
+
} // logger
} // mongo