JabberWerxC  2015.1.1
log.h
Go to the documentation of this file.
1 
13 #ifndef JABBERWERX_UTIL_LOG_H
14 #define JABBERWERX_UTIL_LOG_H
15 
16 #include <stdarg.h>
17 #include <stdio.h>
18 #include "../dom.h"
19 #include "mem.h"
20 
21 
24 #define JW_LOG_TRACE_FUNCTION_NO_ARGS \
25  jw_log(JW_LOG_TRACE, "entering: %s", __func__)
26 
30 #define JW_LOG_TRACE_FUNCTION(fmt, ...) \
31  jw_log(JW_LOG_TRACE, "entering: %s; args=("fmt")", \
32  __func__ , __VA_ARGS__)
33 
42 #define JW_LOG_DOM_REF(level, dom, caption)\
43  jw_log_dom((level), (dom), "%s(context: %p, ref: %p)", \
44  (caption) ? (caption) : "",\
45  (dom) ? (void *)jw_dom_get_context((dom)) : NULL, \
46  (void *)(dom));
47 
48 
52 typedef enum
53 {
70 } jw_loglevel;
71 
91 typedef void (*jw_log_generator_fn)(
92  const char **chunk, size_t *len, jw_data_free_func *free_fn, void *arg);
93 
94 
95 #ifdef __cplusplus
96 extern "C"
97 {
98 #endif
99 
106 JABBERWERX_API const char *jw_log_level_name(jw_loglevel level);
107 
120 typedef int (*jw_log_vararg_function)(
121  FILE *stream, const char *format, va_list ap);
122 
134 
145 
152 
159 JABBERWERX_API void jw_log_set_ndc_enabled(bool enabled);
160 
175 JABBERWERX_API int jw_log_push_ndc(const char *fmt, ...)
176  __attribute__ ((__format__ (__printf__, 1, 2)));
177 
186 JABBERWERX_API void jw_log_pop_ndc(int ndc_depth);
187 
206 JABBERWERX_API void jw_log(jw_loglevel level, const char *fmt, ...)
207  __attribute__ ((__format__ (__printf__, 2, 3)));
208 
223  const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
224 
241  const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
242 
259  jw_log_generator_fn generator_fn, void *arg,
260  const char *fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5)));
261 
262 #ifdef __cplusplus
263 }
264 #endif
265 
266 #endif /* JABBERWERX_UTIL_LOG_H */
JABBERWERX_API const char * jw_log_level_name(jw_loglevel level)
JABBERWERX_API void jw_log_set_level(jw_loglevel level)
#define JABBERWERX_API
Definition: basics.h:32
JABBERWERX_API void jw_log_set_function(jw_log_vararg_function fn)
This file contains JabberWerxC allocation related functions and jw_pool objects.
Definition: log.h:67
JABBERWERX_API void jw_log(jw_loglevel level, const char *fmt,...) __attribute__((__format__(__printf__
Definition: log.h:65
Definition: log.h:61
struct _jw_dom_node jw_dom_node
Definition: dom.h:46
JABBERWERX_API void JABBERWERX_API void jw_log_err(jw_loglevel level, jw_err *err, const char *fmt,...) __attribute__((__format__(__printf__
JABBERWERX_API int jw_log_push_ndc(const char *fmt,...) __attribute__((__format__(__printf__
void(* jw_data_free_func)(void *ptr)
Definition: mem.h:85
#define __attribute__(x)
Definition: basics.h:46
Definition: log.h:55
Definition: log.h:57
Definition: log.h:63
Definition: log.h:69
jw_loglevel
Definition: log.h:52
JABBERWERX_API void JABBERWERX_API void JABBERWERX_API void JABBERWERX_API void jw_log_chunked(jw_loglevel level, jw_log_generator_fn generator_fn, void *arg, const char *fmt,...) __attribute__((__format__(__printf__
void(* jw_log_generator_fn)(const char **chunk, size_t *len, jw_data_free_func *free_fn, void *arg)
Definition: log.h:91
JABBERWERX_API jw_loglevel jw_log_get_level()
Definition: basics.h:157
Definition: log.h:59
JABBERWERX_API void jw_log_set_ndc_enabled(bool enabled)
JABBERWERX_API void JABBERWERX_API void JABBERWERX_API void jw_log_dom(jw_loglevel level, jw_dom_node *dom, const char *fmt,...) __attribute__((__format__(__printf__
JABBERWERX_API int JABBERWERX_API void jw_log_pop_ndc(int ndc_depth)
int(* jw_log_vararg_function)(FILE *stream, const char *format, va_list ap)
Definition: log.h:120