mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-20 07:49:27 +08:00
mdbx: refine internal debug facilities.
Change-Id: I934cb8587f07c59268b16a0dd99daeb7ac440e62
This commit is contained in:
@@ -137,8 +137,8 @@ void __hot maker::pair(serial_t serial, const buffer &key, buffer &value,
|
||||
if (log_enabled(logging::trace)) {
|
||||
char dump_key[128], dump_value[128];
|
||||
log_trace("keygen-pair: key %s, value %s",
|
||||
mdbx_dkey(&key->value, dump_key, sizeof(dump_key)),
|
||||
mdbx_dkey(&value->value, dump_value, sizeof(dump_value)));
|
||||
mdbx_dump_val(&key->value, dump_key, sizeof(dump_key)),
|
||||
mdbx_dump_val(&value->value, dump_value, sizeof(dump_value)));
|
||||
}
|
||||
}
|
||||
|
||||
|
54
test/log.cc
54
test/log.cc
@@ -37,29 +37,18 @@ void __noreturn failure_perror(const char *what, int errnum) {
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static void mdbx_logger(int type, const char *function, int line,
|
||||
static void mdbx_logger(int loglevel, const char *function, int line,
|
||||
const char *msg, va_list args) {
|
||||
logging::loglevel level = logging::info;
|
||||
if (type & MDBX_DBG_EXTRA)
|
||||
level = logging::extra;
|
||||
if (type & MDBX_DBG_TRACE)
|
||||
level = logging::trace;
|
||||
if (type & MDBX_DBG_PRINT)
|
||||
level = logging::verbose;
|
||||
|
||||
if (!function)
|
||||
function = "unknown";
|
||||
if (type & MDBX_DBG_ASSERT) {
|
||||
log_error("mdbx: assertion failure: %s, %d", function, line);
|
||||
level = logging::failure;
|
||||
}
|
||||
|
||||
if (loglevel == MDBX_LOG_FATAL)
|
||||
log_error("mdbx: fatal failure: %s, %d", function, line);
|
||||
|
||||
if (logging::output(
|
||||
level,
|
||||
logging::loglevel(loglevel),
|
||||
strncmp(function, "mdbx_", 5) == 0 ? "%s: " : "mdbx: %s: ", function))
|
||||
logging::feed_ap(msg, args);
|
||||
if (type & MDBX_DBG_ASSERT)
|
||||
abort();
|
||||
}
|
||||
|
||||
namespace logging {
|
||||
@@ -70,13 +59,8 @@ static loglevel level;
|
||||
static FILE *last;
|
||||
|
||||
void setlevel(loglevel _level) {
|
||||
level = (_level > error) ? failure : _level;
|
||||
int mdbx_dbg_opts = MDBX_DBG_ASSERT | MDBX_DBG_JITTER | MDBX_DBG_DUMP;
|
||||
if (level <= trace)
|
||||
mdbx_dbg_opts |= MDBX_DBG_TRACE;
|
||||
if (level <= verbose)
|
||||
mdbx_dbg_opts |= MDBX_DBG_PRINT;
|
||||
int rc = mdbx_setup_debug(mdbx_dbg_opts, mdbx_logger);
|
||||
int rc = mdbx_setup_debug(
|
||||
_level, MDBX_DBG_ASSERT | MDBX_DBG_JITTER | MDBX_DBG_DUMP, mdbx_logger);
|
||||
log_trace("set mdbx debug-opts: 0x%02x", rc);
|
||||
}
|
||||
|
||||
@@ -95,8 +79,8 @@ const char *level2str(const loglevel alevel) {
|
||||
return "extra";
|
||||
case trace:
|
||||
return "trace";
|
||||
case verbose:
|
||||
return "verbose";
|
||||
case debug:
|
||||
return "debug";
|
||||
case info:
|
||||
return "info";
|
||||
case notice:
|
||||
@@ -111,7 +95,7 @@ const char *level2str(const loglevel alevel) {
|
||||
}
|
||||
|
||||
bool output(const loglevel priority, const char *format, ...) {
|
||||
if (priority < level)
|
||||
if (priority > level)
|
||||
return false;
|
||||
|
||||
va_list ap;
|
||||
@@ -245,7 +229,7 @@ local_suffix::~local_suffix() { suffix.erase(trim_pos); }
|
||||
} // namespace logging
|
||||
|
||||
void log_extra(const char *msg, ...) {
|
||||
if (logging::extra >= logging::level) {
|
||||
if (logging::extra <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::extra, msg, ap);
|
||||
@@ -255,7 +239,7 @@ void log_extra(const char *msg, ...) {
|
||||
}
|
||||
|
||||
void log_trace(const char *msg, ...) {
|
||||
if (logging::trace >= logging::level) {
|
||||
if (logging::trace <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::trace, msg, ap);
|
||||
@@ -264,18 +248,18 @@ void log_trace(const char *msg, ...) {
|
||||
logging::last = nullptr;
|
||||
}
|
||||
|
||||
void log_verbose(const char *msg, ...) {
|
||||
if (logging::verbose >= logging::level) {
|
||||
void log_debug(const char *msg, ...) {
|
||||
if (logging::debug <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::verbose, msg, ap);
|
||||
logging::output(logging::debug, msg, ap);
|
||||
va_end(ap);
|
||||
} else
|
||||
logging::last = nullptr;
|
||||
}
|
||||
|
||||
void log_info(const char *msg, ...) {
|
||||
if (logging::info >= logging::level) {
|
||||
if (logging::info <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::info, msg, ap);
|
||||
@@ -285,7 +269,7 @@ void log_info(const char *msg, ...) {
|
||||
}
|
||||
|
||||
void log_notice(const char *msg, ...) {
|
||||
if (logging::notice >= logging::level) {
|
||||
if (logging::notice <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::notice, msg, ap);
|
||||
@@ -295,7 +279,7 @@ void log_notice(const char *msg, ...) {
|
||||
}
|
||||
|
||||
void log_warning(const char *msg, ...) {
|
||||
if (logging::warning >= logging::level) {
|
||||
if (logging::warning <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::warning, msg, ap);
|
||||
@@ -305,7 +289,7 @@ void log_warning(const char *msg, ...) {
|
||||
}
|
||||
|
||||
void log_error(const char *msg, ...) {
|
||||
if (logging::error >= logging::level) {
|
||||
if (logging::error <= logging::level) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
logging::output(logging::error, msg, ap);
|
||||
|
18
test/log.h
18
test/log.h
@@ -24,14 +24,14 @@ const char *test_strerror(int errnum);
|
||||
namespace logging {
|
||||
|
||||
enum loglevel {
|
||||
extra,
|
||||
trace,
|
||||
verbose,
|
||||
info,
|
||||
notice,
|
||||
warning,
|
||||
error,
|
||||
failure,
|
||||
extra = MDBX_LOG_EXTRA,
|
||||
trace = MDBX_LOG_TRACE,
|
||||
debug = MDBX_LOG_DEBUG,
|
||||
info = MDBX_LOG_VERBOSE,
|
||||
notice = MDBX_LOG_NOTICE,
|
||||
warning = MDBX_LOG_WARN,
|
||||
error = MDBX_LOG_ERROR,
|
||||
failure = MDBX_LOG_FATAL
|
||||
};
|
||||
|
||||
const char *level2str(const loglevel level);
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
|
||||
void __printf_args(1, 2) log_extra(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_trace(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_verbose(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_debug(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_info(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_notice(const char *msg, ...);
|
||||
void __printf_args(1, 2) log_warning(const char *msg, ...);
|
||||
|
@@ -28,7 +28,7 @@ void actor_params::set_defaults(const std::string &tmpdir) {
|
||||
#ifdef NDEBUG
|
||||
logging::info;
|
||||
#elif defined(_WIN32) || defined(_WIN64)
|
||||
logging::verbose;
|
||||
logging::debug;
|
||||
#else
|
||||
logging::trace;
|
||||
#endif
|
||||
|
@@ -328,8 +328,8 @@ void testcase::report(size_t nops_done) {
|
||||
return;
|
||||
|
||||
nops_completed += nops_done;
|
||||
log_verbose("== complete +%" PRIuPTR " iteration, total %" PRIuPTR " done",
|
||||
nops_done, nops_completed);
|
||||
log_debug("== complete +%" PRIuPTR " iteration, total %" PRIuPTR " done",
|
||||
nops_done, nops_completed);
|
||||
|
||||
if (global::config::progress_indicator)
|
||||
kick_progress(true);
|
||||
@@ -464,7 +464,7 @@ MDBX_dbi testcase::db_table_open(bool create) {
|
||||
failure("snprintf(tablename): %d", rc);
|
||||
tablename = tablename_buf;
|
||||
}
|
||||
log_verbose("use %s table", tablename ? tablename : "MAINDB");
|
||||
log_debug("use %s table", tablename ? tablename : "MAINDB");
|
||||
|
||||
MDBX_dbi handle = 0;
|
||||
int rc = mdbx_dbi_open(txn_guard.get(), tablename,
|
||||
|
@@ -92,9 +92,9 @@ bool testcase_ttl::run() {
|
||||
|
||||
const unsigned window_width = edge2window(salt, window_max);
|
||||
unsigned head_count = edge2count(salt, count_max);
|
||||
log_verbose("ttl: step #%zu (serial %" PRIu64
|
||||
", window %u, count %u) salt %" PRIu64,
|
||||
nops_completed, serial, window_width, head_count, salt);
|
||||
log_debug("ttl: step #%zu (serial %" PRIu64
|
||||
", window %u, count %u) salt %" PRIu64,
|
||||
nops_completed, serial, window_width, head_count, salt);
|
||||
|
||||
if (window_width) {
|
||||
while (fifo.size() > window_width) {
|
||||
|
Reference in New Issue
Block a user