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;
68 memcpy(buffer, prefix, len);
73 vsnprintf(buffer + len,
sizeof(buffer) - len, fmt, ap);
75 log_function = (jack_log_function_t)jack_tls_get(JackGlobals::fKeyLogFunction);
78 if (log_function == NULL)
80 log_function = jack_log_function;
88 log_function(level, buffer);
95 jack_format_and_log(LOG_LEVEL_ERROR, NULL, fmt, ap);
103 jack_format_and_log(LOG_LEVEL_INFO, NULL, fmt, ap);
109 if (JackGlobals::fVerbose) {
112 jack_format_and_log(LOG_LEVEL_INFO,
"Jack: ", fmt, ap);
117 SERVER_EXPORT
void default_jack_error_callback(
const char *desc)
119 fprintf(stderr,
"%s\n", desc);
123 SERVER_EXPORT
void default_jack_info_callback(
const char *desc)
125 fprintf(stdout,
"%s\n", desc);
129 SERVER_EXPORT
void silent_jack_error_callback(
const char *desc)
132 SERVER_EXPORT
void silent_jack_info_callback(
const char *desc)
SERVER_EXPORT void(* jack_info_callback)(const char *desc)
SERVER_EXPORT void(* jack_error_callback)(const char *desc)
SERVER_EXPORT void jack_error(const char *fmt,...)
SERVER_EXPORT void jack_info(const char *fmt,...)
SERVER_EXPORT void jack_log(const char *fmt,...)