Thu Oct 11 06:42:08 2012

Asterisk developer's documentation


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 /*! \brief Reload logger without rotating log files */
00068 int logger_reload(void);
00069 
00070 void ast_queue_log(const char *queuename, const char *callid, const char *agent, const char *event, const char *fmt, ...)
00071    __attribute__((format(printf, 5, 6)));
00072 
00073 /*! Send a verbose message (based on verbose level)
00074    \brief This works like ast_log, but prints verbose messages to the console depending on verbosity level set.
00075    ast_verbose(VERBOSE_PREFIX_3 "Whatever %s is happening\n", "nothing");
00076    This will print the message to the console if the verbose level is set to a level >= 3
00077    Note the abscence of a comma after the VERBOSE_PREFIX_3.  This is important.
00078    VERBOSE_PREFIX_1 through VERBOSE_PREFIX_3 are defined.
00079  */
00080 void ast_verbose(const char *fmt, ...)
00081    __attribute__((format(printf, 1, 2)));
00082 
00083 int ast_register_verbose(void (*verboser)(const char *string));
00084 int ast_unregister_verbose(void (*verboser)(const char *string));
00085 
00086 void ast_console_puts(const char *string);
00087 
00088 void ast_console_puts_mutable(const char *string);
00089 void ast_console_toggle_mute(int fd, int silent);
00090 
00091 #define _A_ __FILE__, __LINE__, __PRETTY_FUNCTION__
00092 
00093 #ifdef LOG_DEBUG
00094 #undef LOG_DEBUG
00095 #endif
00096 #define __LOG_DEBUG    0
00097 #define LOG_DEBUG      __LOG_DEBUG, _A_
00098 
00099 #ifdef LOG_EVENT
00100 #undef LOG_EVENT
00101 #endif
00102 #define __LOG_EVENT    1
00103 #define LOG_EVENT      __LOG_EVENT, _A_
00104 
00105 #ifdef LOG_NOTICE
00106 #undef LOG_NOTICE
00107 #endif
00108 #define __LOG_NOTICE   2
00109 #define LOG_NOTICE     __LOG_NOTICE, _A_
00110 
00111 #ifdef LOG_WARNING
00112 #undef LOG_WARNING
00113 #endif
00114 #define __LOG_WARNING  3
00115 #define LOG_WARNING    __LOG_WARNING, _A_
00116 
00117 #ifdef LOG_ERROR
00118 #undef LOG_ERROR
00119 #endif
00120 #define __LOG_ERROR    4
00121 #define LOG_ERROR      __LOG_ERROR, _A_
00122 
00123 #ifdef LOG_VERBOSE
00124 #undef LOG_VERBOSE
00125 #endif
00126 #define __LOG_VERBOSE  5
00127 #define LOG_VERBOSE    __LOG_VERBOSE, _A_
00128 
00129 #ifdef LOG_DTMF
00130 #undef LOG_DTMF
00131 #endif
00132 #define __LOG_DTMF  6
00133 #define LOG_DTMF    __LOG_DTMF, _A_
00134 
00135 #if defined(__cplusplus) || defined(c_plusplus)
00136 }
00137 #endif
00138 
00139 #endif /* _ASTERISK_LOGGER_H */

Generated on Thu Oct 11 06:42:08 2012 for Asterisk - the Open Source PBX by  doxygen 1.5.6