diff options
author | Benety Goh <benety@mongodb.com> | 2014-07-16 12:35:13 -0400 |
---|---|---|
committer | Benety Goh <benety@mongodb.com> | 2014-07-29 17:42:21 -0400 |
commit | c91a2c3392fc95be3ed07ba98a4d98b4db754b58 (patch) | |
tree | 255115ae0f8391766ca75441b30225f6a4194d34 /src/mongo/logger/log_component.cpp | |
parent | a0dcb4026b3f1171b4124e2666cf71460d023bb1 (diff) | |
download | mongo-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.cpp | 65 |
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 |