24 #include "libsigrok-internal.h"
44 static int sr_logv(
void *cb_data,
int loglevel,
const char *format,
54 static void *sr_log_callback_data = NULL;
58 #define LOGDOMAIN_MAXLEN 30
59 #define LOGDOMAIN_DEFAULT "sr: "
61 static char sr_log_domain[LOGDOMAIN_MAXLEN + 1] = LOGDOMAIN_DEFAULT;
82 if (loglevel < SR_LOG_NONE || loglevel >
SR_LOG_SPEW) {
83 sr_err(
"Invalid loglevel %d.", loglevel);
87 sr_loglevel = loglevel;
89 sr_dbg(
"libsigrok loglevel set to %d.", loglevel);
125 sr_err(
"log: %s: logdomain was NULL", __func__);
130 snprintf((
char *)&sr_log_domain, LOGDOMAIN_MAXLEN,
"%s", logdomain);
132 sr_dbg(
"Log domain set to '%s'.", (
const char *)&sr_log_domain);
148 return g_strdup((
const char *)&sr_log_domain);
169 sr_err(
"log: %s: cb was NULL", __func__);
175 sr_log_callback = cb;
176 sr_log_callback_data = cb_data;
196 sr_log_callback = sr_logv;
197 sr_log_callback_data = NULL;
202 static int sr_logv(
void *cb_data,
int loglevel,
const char *format, va_list args)
210 if (loglevel > sr_loglevel)
213 if (sr_log_domain[0] !=
'\0')
214 fprintf(stderr,
"%s", sr_log_domain);
215 ret = vfprintf(stderr, format, args);
216 fprintf(stderr,
"\n");
227 va_start(args, format);
228 ret = sr_log_callback(sr_log_callback_data, loglevel, format, args);
240 va_start(args, format);
241 ret = sr_log_callback(sr_log_callback_data,
SR_LOG_SPEW, format, args);
253 va_start(args, format);
254 ret = sr_log_callback(sr_log_callback_data,
SR_LOG_DBG, format, args);
266 va_start(args, format);
267 ret = sr_log_callback(sr_log_callback_data,
SR_LOG_INFO, format, args);
279 va_start(args, format);
280 ret = sr_log_callback(sr_log_callback_data,
SR_LOG_WARN, format, args);
292 va_start(args, format);
293 ret = sr_log_callback(sr_log_callback_data,
SR_LOG_ERR, format, args);
int sr_log_callback_set(sr_log_callback_t cb, void *cb_data)
Set the libsigrok log callback to the specified function.
Output very noisy debug messages.
char * sr_log_logdomain_get(void)
Get the currently configured libsigrok logdomain.
int sr_log_loglevel_set(int loglevel)
Set the libsigrok loglevel.
#define sr_log(l, s, args...)
The public libsigrok header file to be used by frontends.
int sr_log_loglevel_get(void)
Get the libsigrok loglevel.
int(* sr_log_callback_t)(void *cb_data, int loglevel, const char *format, va_list args)
int sr_log_callback_set_default(void)
Set the libsigrok log callback to the default built-in one.
#define sr_dbg(s, args...)
#define sr_info(s, args...)
#define sr_err(s, args...)
#define sr_warn(s, args...)
#define sr_spew(s, args...)
Output informational messages.
int sr_log_logdomain_set(const char *logdomain)
Set the libsigrok logdomain string.