41 template <
typename Arg>
43 toAppend(std::declval<Arg>(), std::declval<std::string*>()),
44 std::declval<void>()) {
52 }
catch (
const std::exception&) {
53 str->append(
"<error_converting_to_string>");
58 template <
typename Arg>
65 }
catch (
const std::exception&) {
69 str->append(
"<no_string_conversion>)");
73 template <
bool IsInHeaderFile>
107 unsigned int lineNumber,
120 template <
typename...
Args>
125 unsigned int lineNumber,
136 createLogString(
std::forward<
Args>(args)...)) {}
147 template <
typename...
Args>
152 unsigned int lineNumber,
164 formatLogString(fmt,
std::forward<
Args>(args)...)) {}
179 bool isCategoryNameOverridden,
181 unsigned int lineNumber,
184 template <
typename...
Args>
189 bool isCategoryNameOverridden,
191 unsigned int lineNumber,
199 isCategoryNameOverridden,
204 createLogString(
std::forward<
Args>(args)...)) {}
205 template <
typename...
Args>
210 bool isCategoryNameOverridden,
212 unsigned int lineNumber,
221 isCategoryNameOverridden,
226 formatLogString(fmt,
std::forward<
Args>(args)...)) {}
228 #ifdef __INCLUDE_LEVEL__ 243 unsigned int lineNumber,
252 unsigned int lineNumber,
262 template <
typename...
Args>
269 unsigned int lineNumber,
280 createLogString(std::forward<Args>(args)...)) {}
281 template <
typename...
Args>
288 unsigned int lineNumber,
300 formatLogString(fmt, std::forward<Args>(args)...)) {}
331 unsigned int lineNumber,
339 bool isCategoryNameOverridden,
341 unsigned int lineNumber,
349 unsigned int lineNumber,
364 template <
typename...
Args>
367 return folly::to<std::string>(std::forward<Args>(args)...);
368 }
catch (
const std::exception& ex) {
376 return folly::to<std::string>(
377 "error constructing log message: ", ex.what());
389 template <
typename...
Args>
392 const Args&... args) noexcept {
395 }
catch (
const std::exception& ex) {
404 result.append(
"error formatting log message: ");
405 result.append(ex.what());
406 result.append(
"; format string: \"");
407 result.append(fmt.
data(), fmt.
size());
408 result.append(
"\", arguments: ");
409 fallbackFormat(&result, args...);
421 template <
typename Arg1,
typename...
Args>
426 fallbackFormat(str, remainder...);
429 template <
typename Arg>
464 template <
bool Fatal>
492 [[noreturn]]
void operator&(std::ostream&);
folly::StringPiece filename_
LogStreamProcessor(const LogCategory *category, LogLevel level, folly::StringPiece filename, unsigned int lineNumber, folly::StringPiece functionName, AppendType, Args &&...args) noexcept
std::ostream & stream() noexcept
void logDisabledHelper(std::true_type) noexcept
void operator&(std::ostream &) noexcept
FOLLY_NOINLINE std::string createLogString(Args &&...args) noexcept
const LogCategory *const category_
std::string sformat(StringPiece fmt, Args &&...args)
constexpr size_type size() const
WriteFlags operator&(WriteFlags a, WriteFlags b)
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
void fallbackFormat(std::string *str, const Arg1 &arg1, const Args &...remainder)
LogStreamProcessor(const LogCategory *category, LogLevel level, folly::StringPiece filename, unsigned int lineNumber, folly::StringPiece functionName, FormatType, folly::StringPiece fmt, Args &&...args) noexcept
void fallbackFormat(std::string *str, const Arg &arg)
bool_constant< true > true_type
LogStreamProcessor(XlogCategoryInfo< true > *categoryInfo, LogLevel level, folly::StringPiece categoryName, bool isCategoryNameOverridden, folly::StringPiece filename, unsigned int lineNumber, folly::StringPiece functionName, FormatType, folly::StringPiece fmt, Args &&...args) noexcept
constexpr Iter data() const
LogStreamProcessor(XlogCategoryInfo< true > *categoryInfo, LogLevel level, folly::StringPiece categoryName, bool isCategoryNameOverridden, folly::StringPiece filename, unsigned int lineNumber, folly::StringPiece functionName, AppendType, Args &&...args) noexcept
void toAppend(char value, Tgt *result)
auto fallbackFormatOneArg(std::string *str, const Arg *arg, int) -> decltype(toAppend(std::declval< Arg >(), std::declval< std::string * >()), std::declval< void >())
bool_constant< false > false_type
folly::StringPiece functionName_
fbstring demangle(const char *name)
FOLLY_NOINLINE std::string formatLogString(folly::StringPiece fmt, const Args &...args) noexcept