24 #include "JackError.h"
25 #include "JackGlobals.h"
26 #include "JackMessageBuffer.h"
30 static bool change_thread_log_function(jack_log_function_t log_function)
32 return (jack_tls_get(JackGlobals::fKeyLogFunction) == NULL
33 && jack_tls_set(JackGlobals::fKeyLogFunction, (
void*)log_function));
36 SERVER_EXPORT
int set_threaded_log_function()
38 return change_thread_log_function(JackMessageBufferAdd);
41 void jack_log_function(
int level,
const char *message)
43 void (* log_callback)(
const char *);
57 log_callback(message);
60 static void jack_format_and_log(
int level,
const char *prefix,
const char *fmt, va_list ap)
64 jack_log_function_t log_function;
69 memcpy(buffer, prefix, len);
74 vsnprintf(buffer + len,
sizeof(buffer) - len, fmt, ap);
76 log_function = (jack_log_function_t)jack_tls_get(JackGlobals::fKeyLogFunction);
79 if (log_function == NULL)
81 log_function = jack_log_function;
89 log_function(level, buffer);
96 jack_format_and_log(LOG_LEVEL_ERROR, NULL, fmt, ap);
104 jack_format_and_log(LOG_LEVEL_INFO, NULL, fmt, ap);
110 if (JackGlobals::fVerbose) {
113 jack_format_and_log(LOG_LEVEL_INFO,
"Jack: ", fmt, ap);
118 SERVER_EXPORT
void default_jack_error_callback(
const char *desc)
120 fprintf(stderr,
"%s\n", desc);
124 SERVER_EXPORT
void default_jack_info_callback(
const char *desc)
126 fprintf(stdout,
"%s\n", desc);
130 SERVER_EXPORT
void silent_jack_error_callback(
const char *desc)
133 SERVER_EXPORT
void silent_jack_info_callback(
const char *desc)