]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/test/logging.c
tdb2: fix intermittent test fail.
[ccan] / ccan / tdb2 / test / logging.c
index 8b057bc662786f5b68761765480ded80da32cb2d..85bdc064c80a7fe179f848e789dc62d1806f2d15 100644 (file)
@@ -6,6 +6,13 @@
 #include "logging.h"
 
 unsigned tap_log_messages;
+const char *log_prefix = "";
+bool suppress_logging;
+
+union tdb_attribute tap_log_attr = {
+       .log = { .base = { .attr = TDB_ATTRIBUTE_LOG },
+                .log_fn = tap_log_fn }
+};
 
 void tap_log_fn(struct tdb_context *tdb,
                enum tdb_debug_level level, void *priv,
@@ -14,12 +21,19 @@ void tap_log_fn(struct tdb_context *tdb,
        va_list ap;
        char *p;
 
+       if (suppress_logging)
+               return;
+
        va_start(ap, fmt);
        if (vasprintf(&p, fmt, ap) == -1)
                abort();
-       diag("tdb log level %u: %s", level, p);
+       /* Strip trailing \n: diag adds it. */
+       if (p[strlen(p)-1] == '\n')
+               p[strlen(p)-1] = '\0';
+       diag("tdb log level %u: %s%s", level, log_prefix, p);
        free(p);
-       tap_log_messages++;
+       if (level != TDB_DEBUG_TRACE)
+               tap_log_messages++;
        va_end(ap);
 }