27#if defined(MONGO_UTIL_LOG_H_)
28#error "mongo/util/log.h cannot be included multiple times. " \
29 "This may occur when log.h is included in a header. " \
30 "Please check your #include's."
32#define MONGO_UTIL_LOG_H_
34#include "mongo/base/status.h"
35#include "mongo/bson/util/builder.h"
36#include "mongo/logger/log_component.h"
37#include "mongo/logger/logger.h"
38#include "mongo/logger/logstream_builder.h"
39#include "mongo/logger/tee.h"
43#if defined(MONGO_LOG_DEFAULT_COMPONENT)
44const ::mongo::logger::LogComponent MongoLogDefaultComponent_component =
45 MONGO_LOG_DEFAULT_COMPONENT;
47#error "mongo/util/log.h requires MONGO_LOG_DEFAULT_COMPONENT to be defined. " \
48 "Please see http://www.mongodb.org/about/contributors/reference/server-logging-rules/ "
54 typedef void (*ExtraLogContextFn)(BufBuilder& builder);
55 Status registerExtraLogContextFn(ExtraLogContextFn contextFn);
61 using logger::LogstreamBuilder;
62 using logger::LabeledLevel;
68 inline LogstreamBuilder severe() {
69 return LogstreamBuilder(logger::globalLogDomain(),
71 logger::LogSeverity::Severe(),
72 ::MongoLogDefaultComponent_component);
75 inline LogstreamBuilder severe(logger::LogComponent component) {
76 return LogstreamBuilder(logger::globalLogDomain(),
78 logger::LogSeverity::Severe(),
85 inline LogstreamBuilder error() {
86 return LogstreamBuilder(logger::globalLogDomain(),
88 logger::LogSeverity::Error(),
89 ::MongoLogDefaultComponent_component);
92 inline LogstreamBuilder error(logger::LogComponent component) {
93 return LogstreamBuilder(logger::globalLogDomain(),
95 logger::LogSeverity::Error(),
102 inline LogstreamBuilder warning() {
103 return LogstreamBuilder(logger::globalLogDomain(),
105 logger::LogSeverity::Warning(),
106 ::MongoLogDefaultComponent_component);
109 inline LogstreamBuilder warning(logger::LogComponent component) {
110 return LogstreamBuilder(logger::globalLogDomain(),
112 logger::LogSeverity::Warning(),
119 inline LogstreamBuilder log() {
120 return LogstreamBuilder(logger::globalLogDomain(),
122 logger::LogSeverity::Log(),
123 ::MongoLogDefaultComponent_component);
126 inline LogstreamBuilder log(logger::LogComponent component) {
127 return LogstreamBuilder(logger::globalLogDomain(),
129 logger::LogSeverity::Log(),
133 inline LogstreamBuilder log(logger::LogComponent::Value componentValue) {
134 return LogstreamBuilder(logger::globalLogDomain(),
136 logger::LogSeverity::Log(),
143 inline bool shouldLog(logger::LogSeverity severity) {
144 return logger::globalLogDomain()->shouldLog(::MongoLogDefaultComponent_component, severity);
150#define MONGO_LOG(DLEVEL) \
151 if (!(::mongo::logger::globalLogDomain())->shouldLog(MongoLogDefaultComponent_component, ::mongo::LogstreamBuilder::severityCast(DLEVEL))) {} \
152 else ::mongo::logger::LogstreamBuilder(::mongo::logger::globalLogDomain(), std::string(), ::mongo::LogstreamBuilder::severityCast(DLEVEL), MongoLogDefaultComponent_component)
156#define MONGO_LOG_COMPONENT(DLEVEL, COMPONENT1) \
157 if (!(::mongo::logger::globalLogDomain())->shouldLog((COMPONENT1), ::mongo::LogstreamBuilder::severityCast(DLEVEL))) {} \
158 else ::mongo::logger::LogstreamBuilder(::mongo::logger::globalLogDomain(), std::string(), ::mongo::LogstreamBuilder::severityCast(DLEVEL), (COMPONENT1))
160#define MONGO_LOG_COMPONENT2(DLEVEL, COMPONENT1, COMPONENT2) \
161 if (!(::mongo::logger::globalLogDomain())->shouldLog((COMPONENT1), (COMPONENT2), ::mongo::LogstreamBuilder::severityCast(DLEVEL))) {} \
162 else ::mongo::logger::LogstreamBuilder(::mongo::logger::globalLogDomain(), std::string(), ::mongo::LogstreamBuilder::severityCast(DLEVEL), (COMPONENT1))
164#define MONGO_LOG_COMPONENT3(DLEVEL, COMPONENT1, COMPONENT2, COMPONENT3) \
165 if (!(::mongo::logger::globalLogDomain())->shouldLog((COMPONENT1), (COMPONENT2), (COMPONENT3), ::mongo::LogstreamBuilder::severityCast(DLEVEL))) {} \
166 else ::mongo::logger::LogstreamBuilder(::mongo::logger::globalLogDomain(), std::string(), ::mongo::LogstreamBuilder::severityCast(DLEVEL), (COMPONENT1))
174 std::string errnoWithDescription(
int errorcode = -1);
the main MongoDB namespace
Definition bulk_operation_builder.h:24
MONGO_CLIENT_API Status(MONGO_CLIENT_FUNC *saslClientAuthenticate)(DBClientWithCommands *client
Attempts to authenticate "client" using the SASL protocol.
void logContext(const char *msg=NULL)
Write the optional "msg".
std::string errnoWithPrefix(const char *prefix)
output the error # and error message with prefix.