⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 log.h

📁 基于sip协议的网络电话源码
💻 H
字号:
/* $Id: log.h 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#ifndef __PJ_LOG_H__#define __PJ_LOG_H__/** * @file log.h * @brief Logging Utility. */#include <pj/types.h>#include <stdarg.h>PJ_BEGIN_DECL/** * @defgroup PJ_MISC Miscelaneous * @ingroup PJ *//** * @defgroup PJ_LOG Logging Facility * @ingroup PJ_MISC * @{ * * The PJLIB logging facility is a configurable, flexible, and convenient * way to write logging or trace information. * * To write to the log, one uses construct like below: * * <pre> *   ... *   PJ_LOG(3, ("main.c", "Starting hello...")); *   ... *   PJ_LOG(3, ("main.c", "Hello world from process %d", pj_getpid())); *   ... * </pre> * * In the above example, the number @b 3 controls the verbosity level of * the information (which means "information", by convention). The string * "main.c" specifies the source or sender of the message. * * * \section pj_log_quick_sample_sec Examples * * For examples, see: *  - @ref page_pjlib_samples_log_c. * *//** * Log decoration flag, to be specified with #pj_log_set_decor(). */enum pj_log_decoration{    PJ_LOG_HAS_DAY_NAME   =   1, /**< Include day name [default: no].	     */    PJ_LOG_HAS_YEAR       =   2, /**< Include year digit [default: no]	     */    PJ_LOG_HAS_MONTH	  =   4, /**< Include month [default: no]	     */    PJ_LOG_HAS_DAY_OF_MON =   8, /**< Include day of month [default: no]     */    PJ_LOG_HAS_TIME	  =  16, /**< Include time [default: yes].	     */    PJ_LOG_HAS_MICRO_SEC  =  32, /**< Include microseconds [yes]             */    PJ_LOG_HAS_SENDER	  =  64, /**< Include sender in the log [yes].	     */    PJ_LOG_HAS_NEWLINE	  = 128, /**< Terminate each call with newline [yes].*/    PJ_LOG_HAS_CR	  = 256  /**< Include carriage return [no].	     */};/** * Write log message. * This is the main macro used to write text to the logging backend.  * * @param level	    The logging verbosity level. Lower number indicates higher *		    importance, with level zero indicates fatal error. Only *		    numeral argument is permitted (e.g. not variable). * @param arg	    Enclosed 'printf' like arguments, with the first  *		    argument is the sender, the second argument is format  *		    string and the following arguments are variable number of  *		    arguments suitable for the format string. * * Sample: * \verbatim   PJ_LOG(2, (__FILE__, "current value is %d", value));   \endverbatim * @hideinitializer */#define PJ_LOG(level,arg)	pj_log_wrapper_##level(arg)/** * Signature for function to be registered to the logging subsystem to * write the actual log message to some output device. * * @param level	    Log level. * @param data	    Log message. * @param len	    Message length. */typedef void pj_log_func(int level, const char *data, int len);/** * Default logging writer function used by front end logger function. * This function will print the log message to stdout only. * Application normally should NOT need to call this function, but * rather use the PJ_LOG macro. * * @param level	    Log level. * @param buffer    Log message. * @param len	    Message length. */PJ_DECL(void) pj_log_write(int level, const char *buffer, int len);#if PJ_LOG_MAX_LEVEL >= 1/** * Write to log. * * @param sender    Source of the message. * @param level	    Verbosity level. * @param format    Format. * @param marker    Marker. */PJ_DECL(void) pj_log(const char *sender, int level, 		     const char *format, va_list marker);/** * Change log output function. The front-end logging functions will call * this function to write the actual message to the desired device.  * By default, the front-end functions use pj_log_write() to write * the messages, unless it's changed by calling this function. * * @param func	    The function that will be called to write the log *		    messages to the desired device. */PJ_DECL(void) pj_log_set_log_func( pj_log_func *func );/** * Get the current log output function that is used to write log messages. * * @return	    Current log output function. */PJ_DECL(pj_log_func*) pj_log_get_log_func(void);/** * Set maximum log level. Application can call this function to set  * the desired level of verbosity of the logging messages. The bigger the * value, the more verbose the logging messages will be printed. However, * the maximum level of verbosity can not exceed compile time value of * PJ_LOG_MAX_LEVEL. * * @param level	    The maximum level of verbosity of the logging *		    messages (6=very detailed..1=error only, 0=disabled) */PJ_DECL(void) pj_log_set_level(int level);/** * Get current maximum log verbositylevel. * * @return	    Current log maximum level. */PJ_DECL(int) pj_log_get_level(void);/** * Set log decoration. The log decoration flag controls what are printed * to output device alongside the actual message. For example, application * can specify that date/time information should be displayed with each * log message. * * @param decor	    Bitmask combination of #pj_log_decoration to control *		    the layout of the log message. */PJ_DECL(void) pj_log_set_decor(unsigned decor);/** * Get current log decoration flag. * * @return	    Log decoration flag. */PJ_DECL(unsigned) pj_log_get_decor(void);#else	/* #if PJ_LOG_MAX_LEVEL >= 1 *//** * Change log output function. The front-end logging functions will call * this function to write the actual message to the desired device.  * By default, the front-end functions use pj_log_write() to write * the messages, unless it's changed by calling this function. * * @param func	    The function that will be called to write the log *		    messages to the desired device. */#  define pj_log_set_log_func(func)/** * Set maximum log level. Application can call this function to set  * the desired level of verbosity of the logging messages. The bigger the * value, the more verbose the logging messages will be printed. However, * the maximum level of verbosity can not exceed compile time value of * PJ_LOG_MAX_LEVEL. * * @param level	    The maximum level of verbosity of the logging *		    messages (6=very detailed..1=error only, 0=disabled) */#  define pj_log_set_level(level)/** * Set log decoration. The log decoration flag controls what are printed * to output device alongside the actual message. For example, application * can specify that date/time information should be displayed with each * log message. * * @param decor	    Bitmask combination of #pj_log_decoration to control *		    the layout of the log message. */#  define pj_log_set_decor(decor)/** * Get current maximum log verbositylevel. * * @return	    Current log maximum level. */#  define pj_log_get_level()	0/** * Get current log decoration flag. * * @return	    Log decoration flag. */#  define pj_log_get_decor()	0#endif	/* #if PJ_LOG_MAX_LEVEL >= 1 *//**  * @} *//* **************************************************************************//* * Log functions implementation prototypes. * These functions are called by PJ_LOG macros according to verbosity * level specified when calling the macro. Applications should not normally * need to call these functions directly. *//** * @def pj_log_wrapper_1(arg) * Internal function to write log with verbosity 1. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 1. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 1    #define pj_log_wrapper_1(arg)	pj_log_1 arg    /** Internal function. */    PJ_DECL(void) pj_log_1(const char *src, const char *format, ...);#else    #define pj_log_wrapper_1(arg)#endif/** * @def pj_log_wrapper_2(arg) * Internal function to write log with verbosity 2. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 2. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 2    #define pj_log_wrapper_2(arg)	pj_log_2 arg    /** Internal function. */    PJ_DECL(void) pj_log_2(const char *src, const char *format, ...);#else    #define pj_log_wrapper_2(arg)#endif/** * @def pj_log_wrapper_3(arg) * Internal function to write log with verbosity 3. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 3. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 3    #define pj_log_wrapper_3(arg)	pj_log_3 arg    /** Internal function. */    PJ_DECL(void) pj_log_3(const char *src, const char *format, ...);#else    #define pj_log_wrapper_3(arg)#endif/** * @def pj_log_wrapper_4(arg) * Internal function to write log with verbosity 4. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 4. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 4    #define pj_log_wrapper_4(arg)	pj_log_4 arg    /** Internal function. */    PJ_DECL(void) pj_log_4(const char *src, const char *format, ...);#else    #define pj_log_wrapper_4(arg)#endif/** * @def pj_log_wrapper_5(arg) * Internal function to write log with verbosity 5. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 5. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 5    #define pj_log_wrapper_5(arg)	pj_log_5 arg    /** Internal function. */    PJ_DECL(void) pj_log_5(const char *src, const char *format, ...);#else    #define pj_log_wrapper_5(arg)#endif/** * @def pj_log_wrapper_6(arg) * Internal function to write log with verbosity 6. Will evaluate to * empty expression if PJ_LOG_MAX_LEVEL is below 6. * @param arg       Log expression. */#if PJ_LOG_MAX_LEVEL >= 6    #define pj_log_wrapper_6(arg)	pj_log_6 arg    /** Internal function. */    PJ_DECL(void) pj_log_6(const char *src, const char *format, ...);#else    #define pj_log_wrapper_6(arg)#endifPJ_END_DECL #endif  /* __PJ_LOG_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -