Merge branch 'upstream-loguru' into encapsulate-loguru-namespace

# By Loguru Upstream
* upstream-loguru:
  loguru 2022-02-17 (7c85104f)
This commit is contained in:
Vicente Adolfo Bolea Sanchez 2022-02-17 15:54:34 -05:00
commit 2be4da84d1
2 changed files with 68 additions and 25 deletions

@ -124,6 +124,8 @@
#define LOGURU_PTLS_NAMES 0
#endif
LOGURU_ANONYMOUS_NAMESPACE_BEGIN
namespace loguru
{
using namespace std::chrono;
@ -1334,9 +1336,14 @@ namespace loguru
{
va_list vlist;
va_start(vlist, format);
vlog(verbosity, file, line, format, vlist);
va_end(vlist);
}
void vlog(Verbosity verbosity, const char* file, unsigned line, const char* format, va_list vlist)
{
auto buff = vtextprintf(format, vlist);
log_to_everywhere(1, verbosity, file, line, "", buff.c_str());
va_end(vlist);
}
void raw_log(Verbosity verbosity, const char* file, unsigned line, const char* format, ...)
@ -1363,31 +1370,19 @@ namespace loguru
s_needs_flushing = false;
}
LogScopeRAII::LogScopeRAII(Verbosity verbosity, const char* file, unsigned line, const char* format, ...)
: _verbosity(verbosity), _file(file), _line(line)
LogScopeRAII::LogScopeRAII(Verbosity verbosity, const char* file, unsigned line, const char* format, va_list vlist) :
_verbosity(verbosity), _file(file), _line(line)
{
if (verbosity <= current_verbosity_cutoff()) {
std::lock_guard<std::recursive_mutex> lock(s_mutex);
_indent_stderr = (verbosity <= g_stderr_verbosity);
_start_time_ns = now_ns();
va_list vlist;
va_start(vlist, format);
vsnprintf(_name, sizeof(_name), format, vlist);
log_to_everywhere(1, _verbosity, file, line, "{ ", _name);
va_end(vlist);
this->Init(format, vlist);
}
if (_indent_stderr) {
++s_stderr_indentation;
}
for (auto& p : s_callbacks) {
if (verbosity <= p.verbosity) {
++p.indentation;
}
}
} else {
_file = nullptr;
}
LogScopeRAII::LogScopeRAII(Verbosity verbosity, const char* file, unsigned line, const char* format, ...) :
_verbosity(verbosity), _file(file), _line(line)
{
va_list vlist;
va_start(vlist, format);
this->Init(format, vlist);
va_end(vlist);
}
LogScopeRAII::~LogScopeRAII()
@ -1416,6 +1411,29 @@ namespace loguru
}
}
void LogScopeRAII::Init(const char* format, va_list vlist)
{
if (_verbosity <= current_verbosity_cutoff()) {
std::lock_guard<std::recursive_mutex> lock(s_mutex);
_indent_stderr = (_verbosity <= g_stderr_verbosity);
_start_time_ns = now_ns();
vsnprintf(_name, sizeof(_name), format, vlist);
log_to_everywhere(1, _verbosity, _file, _line, "{ ", _name);
if (_indent_stderr) {
++s_stderr_indentation;
}
for (auto& p : s_callbacks) {
if (_verbosity <= p.verbosity) {
++p.indentation;
}
}
} else {
_file = nullptr;
}
}
void log_and_abort(int stack_trace_skip, const char* expr, const char* file, unsigned line, const char* format, ...)
{
va_list vlist;
@ -1791,4 +1809,6 @@ namespace loguru
#endif // _WIN32
LOGURU_ANONYMOUS_NAMESPACE_END
#endif // LOGURU_IMPLEMENTATION

@ -188,6 +188,14 @@ Website: www.ilikebigbits.com
#endif
#endif
#ifdef LOGURU_USE_ANONYMOUS_NAMESPACE
#define LOGURU_ANONYMOUS_NAMESPACE_BEGIN namespace {
#define LOGURU_ANONYMOUS_NAMESPACE_END }
#else
#define LOGURU_ANONYMOUS_NAMESPACE_BEGIN
#define LOGURU_ANONYMOUS_NAMESPACE_END
#endif
// --------------------------------------------------------------------
// Utility macros
@ -238,7 +246,10 @@ Website: www.ilikebigbits.com
#define STRDUP(str) strdup(str)
#endif
#include <cstdarg>
// --------------------------------------------------------------------
LOGURU_ANONYMOUS_NAMESPACE_BEGIN
namespace loguru
{
@ -535,6 +546,10 @@ namespace loguru
LOGURU_EXPORT
void log(Verbosity verbosity, const char* file, unsigned line, LOGURU_FORMAT_STRING_TYPE format, ...) LOGURU_PRINTF_LIKE(4, 5);
// Actual logging function.
LOGURU_EXPORT
void vlog(Verbosity verbosity, const char* file, unsigned line, LOGURU_FORMAT_STRING_TYPE format, va_list) LOGURU_PRINTF_LIKE(4, 0);
// Log without any preamble or indentation.
LOGURU_EXPORT
void raw_log(Verbosity verbosity, const char* file, unsigned line, LOGURU_FORMAT_STRING_TYPE format, ...) LOGURU_PRINTF_LIKE(4, 5);
@ -545,9 +560,12 @@ namespace loguru
{
public:
LogScopeRAII() : _file(nullptr) {} // No logging
LogScopeRAII(Verbosity verbosity, const char* file, unsigned line, LOGURU_FORMAT_STRING_TYPE format, va_list vlist) LOGURU_PRINTF_LIKE(5, 0);
LogScopeRAII(Verbosity verbosity, const char* file, unsigned line, LOGURU_FORMAT_STRING_TYPE format, ...) LOGURU_PRINTF_LIKE(5, 6);
~LogScopeRAII();
void Init(LOGURU_FORMAT_STRING_TYPE format, va_list vlist) LOGURU_PRINTF_LIKE(2, 0);
#if defined(_MSC_VER) && _MSC_VER > 1800
// older MSVC default move ctors close the scope on move. See
// issue #43
@ -910,6 +928,8 @@ namespace loguru
*/
} // namespace loguru
LOGURU_ANONYMOUS_NAMESPACE_END
// --------------------------------------------------------------------
// Logging macros
@ -1075,10 +1095,11 @@ namespace loguru
because including it everywhere will slow down compilation times.
*/
#include <cstdarg>
#include <sstream> // Adds about 38 kLoC on clang.
#include <string>
LOGURU_ANONYMOUS_NAMESPACE_BEGIN
namespace loguru
{
// Like sprintf, but returns the formated text.
@ -1194,6 +1215,8 @@ namespace loguru
inline unsigned long long referenceable_value(unsigned long long t) { return t; }
} // namespace loguru
LOGURU_ANONYMOUS_NAMESPACE_END
// -----------------------------------------------
// Logging macros: