summaryrefslogtreecommitdiff
path: root/lib/tdb2/test/logging.c
blob: 6927592b8a26cc06384b11a5accaa80fe65f234e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <ccan/tap/tap.h>
#include "logging.h"

unsigned tap_log_messages;
const char *log_prefix = "";
char *log_last = NULL;
bool suppress_logging;

union tdb_attribute tap_log_attr = {
	.log = { .base = { .attr = TDB_ATTRIBUTE_LOG },
		 .fn = tap_log_fn }
};

void tap_log_fn(struct tdb_context *tdb,
		enum tdb_log_level level,
		enum TDB_ERROR ecode,
		const char *message, void *priv)
{
	if (suppress_logging)
		return;

	diag("tdb log level %u: %s: %s%s",
	     level, tdb_errorstr(ecode), log_prefix, message);
	if (log_last)
		free(log_last);
	log_last = strdup(message);
	tap_log_messages++;
}