#include <folly/Conv.h>
#include <folly/Demangle.h>
#include <folly/Format.h>
+#include <folly/Portability.h>
#include <folly/experimental/logging/LogCategory.h>
#include <folly/experimental/logging/LogMessage.h>
#include <cstdlib>
LogLevel level,
folly::StringPiece filename,
unsigned int lineNumber,
- AppendType) noexcept
- : category_{category},
- level_{level},
- filename_{filename},
- lineNumber_{lineNumber} {}
+ AppendType) noexcept;
/**
* LogStreamProcessor constructor for use with a LOG() macro with arguments
unsigned int lineNumber,
AppendType,
Args&&... args) noexcept
- : category_{category},
- level_{level},
- filename_{filename},
- lineNumber_{lineNumber},
- message_{createLogString(std::forward<Args>(args)...)} {}
+ : LogStreamProcessor{category,
+ level,
+ filename,
+ lineNumber,
+ INTERNAL,
+ createLogString(std::forward<Args>(args)...)} {}
/**
* LogStreamProcessor constructor for use with a LOG() macro with arguments
FormatType,
folly::StringPiece fmt,
Args&&... args) noexcept
- : category_{category},
- level_{level},
- filename_{filename},
- lineNumber_{lineNumber},
- message_{formatLogString(fmt, std::forward<Args>(args)...)} {}
+ : LogStreamProcessor{category,
+ level,
+ filename,
+ lineNumber,
+ INTERNAL,
+ formatLogString(fmt, std::forward<Args>(args)...)} {}
/**
* This version of operator&() is typically used when the user specifies
void operator&(LogStream&& stream) noexcept;
private:
+ enum InternalType { INTERNAL };
+ LogStreamProcessor(
+ const LogCategory* category,
+ LogLevel level,
+ const char* filename,
+ unsigned int lineNumber,
+ InternalType,
+ std::string&& msg) noexcept;
+
std::string extractMessageString(LogStream& stream) noexcept;
/**