![]() |
Home page |
Mailing list |
Docs
Asterisk developer's documentation :: Codename Pineapple
logger.h
Go to the documentation of this file.
00001 /* 00002 * Asterisk -- An open source telephony toolkit. 00003 * 00004 * Copyright (C) 1999 - 2005, Digium, Inc. 00005 * 00006 * Mark Spencer <markster@digium.com> 00007 * 00008 * See http://www.asterisk.org for more information about 00009 * the Asterisk project. Please do not directly contact 00010 * any of the maintainers of this project for assistance; 00011 * the project provides a web site, mailing lists and IRC 00012 * channels for your use. 00013 * 00014 * This program is free software, distributed under the terms of 00015 * the GNU General Public License Version 2. See the LICENSE file 00016 * at the top of the source tree. 00017 */ 00018 00019 /*! 00020 \file logger.h 00021 \brief Support for logging to various files, console and syslog 00022 Configuration in file logger.conf 00023 */ 00024 00025 #ifndef _ASTERISK_LOGGER_H 00026 #define _ASTERISK_LOGGER_H 00027 00028 #include "asterisk/compat.h" 00029 00030 #include <stdarg.h> 00031 00032 #if defined(__cplusplus) || defined(c_plusplus) 00033 extern "C" { 00034 #endif 00035 00036 #define EVENTLOG "event_log" 00037 #define QUEUELOG "queue_log" 00038 00039 #define DEBUG_M(a) { \ 00040 a; \ 00041 } 00042 00043 #define VERBOSE_PREFIX_1 " " 00044 #define VERBOSE_PREFIX_2 " == " 00045 #define VERBOSE_PREFIX_3 " -- " 00046 #define VERBOSE_PREFIX_4 " > " 00047 00048 /*! Used for sending a log message */ 00049 /*! 00050 \brief This is the standard logger function. Probably the only way you will invoke it would be something like this: 00051 ast_log(LOG_WHATEVER, "Problem with the %s Captain. We should get some more. Will %d be enough?\n", "flux capacitor", 10); 00052 where WHATEVER is one of ERROR, DEBUG, EVENT, NOTICE, or WARNING depending 00053 on which log you wish to output to. These are implemented as macros, that 00054 will provide the function with the needed arguments. 00055 00056 \param level Type of log event 00057 \param file Will be provided by the LOG_* macro 00058 \param line Will be provided by the LOG_* macro 00059 \param function Will be provided by the LOG_* macro 00060 \param fmt This is what is important. The format is the same as your favorite breed of printf. You know how that works, right? :-) 00061 */ 00062 void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...) 00063 __attribute__ ((format (printf, 5, 6))); 00064 00065 void ast_backtrace(void); 00066 00067 void ast_queue_log(const char *queuename, const char *callid, const char *agent, const char *event, const char *fmt, ...) 00068 __attribute__ ((format (printf, 5, 6))); 00069 00070 /*! Send a verbose message (based on verbose level) 00071 \brief This works like ast_log, but prints verbose messages to the console depending on verbosity level set. 00072 ast_verbose(VERBOSE_PREFIX_3 "Whatever %s is happening\n", "nothing"); 00073 This will print the message to the console if the verbose level is set to a level >= 3 00074 Note the abscence of a comma after the VERBOSE_PREFIX_3. This is important. 00075 VERBOSE_PREFIX_1 through VERBOSE_PREFIX_3 are defined. 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); 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 #if defined(__cplusplus) || defined(c_plusplus) 00133 } 00134 #endif 00135 00136 #endif /* _ASTERISK_LOGGER_H */