00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _ASTERISK_LOGGER_H
00026 #define _ASTERISK_LOGGER_H
00027
00028 #include "asterisk/options.h"
00029
00030 #if defined(__cplusplus) || defined(c_plusplus)
00031 extern "C" {
00032 #endif
00033
00034 #define EVENTLOG "event_log"
00035 #define QUEUELOG "queue_log"
00036
00037 #define DEBUG_M(a) { \
00038 a; \
00039 }
00040
00041 #define VERBOSE_PREFIX_1 " "
00042 #define VERBOSE_PREFIX_2 " == "
00043 #define VERBOSE_PREFIX_3 " -- "
00044 #define VERBOSE_PREFIX_4 " > "
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
00061 __attribute__((format(printf, 5, 6)));
00062
00063 void ast_backtrace(void);
00064
00065
00066 int logger_reload(void);
00067
00068 void __attribute__((format(printf, 5, 6))) ast_queue_log(const char *queuename, const char *callid, const char *agent, const char *event, const char *fmt, ...);
00069
00070
00071
00072
00073
00074
00075
00076
00077 void ast_verbose(const char *fmt, ...)
00078 __attribute__ ((format (printf, 1, 2)));
00079
00080 int ast_register_verbose(void (*verboser)(const char *string));
00081 int ast_unregister_verbose(void (*verboser)(const char *string));
00082
00083 void ast_console_puts(const char *string);
00084
00085 void ast_console_puts_mutable(const char *string);
00086 void ast_console_toggle_mute(int fd, int silent);
00087
00088 #define _A_ __FILE__, __LINE__, __PRETTY_FUNCTION__
00089
00090 #ifdef LOG_DEBUG
00091 #undef LOG_DEBUG
00092 #endif
00093 #define __LOG_DEBUG 0
00094 #define LOG_DEBUG __LOG_DEBUG, _A_
00095
00096 #ifdef LOG_EVENT
00097 #undef LOG_EVENT
00098 #endif
00099 #define __LOG_EVENT 1
00100 #define LOG_EVENT __LOG_EVENT, _A_
00101
00102 #ifdef LOG_NOTICE
00103 #undef LOG_NOTICE
00104 #endif
00105 #define __LOG_NOTICE 2
00106 #define LOG_NOTICE __LOG_NOTICE, _A_
00107
00108 #ifdef LOG_WARNING
00109 #undef LOG_WARNING
00110 #endif
00111 #define __LOG_WARNING 3
00112 #define LOG_WARNING __LOG_WARNING, _A_
00113
00114 #ifdef LOG_ERROR
00115 #undef LOG_ERROR
00116 #endif
00117 #define __LOG_ERROR 4
00118 #define LOG_ERROR __LOG_ERROR, _A_
00119
00120 #ifdef LOG_VERBOSE
00121 #undef LOG_VERBOSE
00122 #endif
00123 #define __LOG_VERBOSE 5
00124 #define LOG_VERBOSE __LOG_VERBOSE, _A_
00125
00126 #ifdef LOG_DTMF
00127 #undef LOG_DTMF
00128 #endif
00129 #define __LOG_DTMF 6
00130 #define LOG_DTMF __LOG_DTMF, _A_
00131
00132
00133
00134
00135
00136
00137 unsigned int ast_debug_get_by_file(const char *file);
00138
00139
00140
00141
00142
00143
00144 unsigned int ast_verbose_get_by_file(const char *file);
00145
00146
00147
00148
00149
00150
00151 #define ast_debug(level, ...) do { \
00152 if (option_debug >= (level) || (ast_opt_dbg_file && ast_debug_get_by_file(__FILE__) >= (level)) ) \
00153 ast_log(LOG_DEBUG, __VA_ARGS__); \
00154 } while (0)
00155
00156 #define VERBOSITY_ATLEAST(level) (option_verbose >= (level) || (ast_opt_verb_file && ast_verbose_get_by_file(__FILE__) >= (level)))
00157
00158 #define ast_verb(level, ...) do { \
00159 if (VERBOSITY_ATLEAST((level)) ) { \
00160 if (level >= 4) \
00161 ast_verbose(VERBOSE_PREFIX_4 __VA_ARGS__); \
00162 else if (level == 3) \
00163 ast_verbose(VERBOSE_PREFIX_3 __VA_ARGS__); \
00164 else if (level == 2) \
00165 ast_verbose(VERBOSE_PREFIX_2 __VA_ARGS__); \
00166 else if (level == 1) \
00167 ast_verbose(VERBOSE_PREFIX_1 __VA_ARGS__); \
00168 else \
00169 ast_verbose(__VA_ARGS__); \
00170 } \
00171 } while (0)
00172
00173 #if defined(__cplusplus) || defined(c_plusplus)
00174 }
00175 #endif
00176
00177 #endif