00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __nanohttp_logging_h
00024 #define __nanohttp_logging_h
00025
00037 #define NHTTP_ARG_LOGFILE "-NHTTPlog"
00038 #define NHTTP_ARG_LOGLEVEL "-NHTTPloglevel"
00039
00042 typedef enum nanohttp_loglevel
00043 {
00044 NANOHTTP_LOG_OFF,
00046 NANOHTTP_LOG_VERBOSE,
00048 NANOHTTP_LOG_DEBUG,
00050 NANOHTTP_LOG_INFO,
00051 NANOHTTP_LOG_WARN,
00052 NANOHTTP_LOG_ERROR,
00055 NANOHTTP_LOG_FATAL
00056 } nanohttp_loglevel_t;
00057
00058 #define NANOHTTP_LOG_LEVEL_OFF_STRING "OFF"
00059 #define NANOHTTP_LOG_LEVEL_VERBOSE_STRING "VERBOSE"
00060 #define NANOHTTP_LOG_LEVEL_DEBUG_STRING "DEBUG"
00061 #define NANOHTTP_LOG_LEVEL_INFO_STRING "INFO"
00062 #define NANOHTTP_LOG_LEVEL_WARN_STRING "WARN"
00063 #define NANOHTTP_LOG_LEVEL_ERROR_STRING "ERROR"
00064 #define NANOHTTP_LOG_LEVEL_FATAL_STRING "FATAL"
00065 #define NANOHTTP_LOG_LEVEL_UNKNOWN_STRING "UNKNOWN"
00066
00067 #ifdef __cplusplus
00068 extern "C" {
00069 #endif
00070
00078 extern nanohttp_loglevel_t nanohttp_log_set_loglevel(nanohttp_loglevel_t level);
00079
00084 extern nanohttp_loglevel_t nanohttp_log_get_loglevel(void);
00085
00090 extern void nanohttp_log_set_logfile(const char *filename);
00091
00096 extern const char *nanohttp_log_get_logfile(void);
00097
00098 #define NANOHTTP_LOG_DISABLED 0x00
00099 #define NANOHTTP_LOG_FOREGROUND 0x01
00100 #define NANOHTTP_LOG_SYSLOG 0x02
00110 extern int nanohttp_log_set_logtype(int type);
00111
00112 #ifdef WIN32
00113 #if defined(_MSC_VER) && _MSC_VER <= 1200
00114 extern char *VisualC_funcname(const char *file, int line);
00115 #define __FUNCTION__ VisualC_funcname(__FILE__, __LINE__)
00116 #endif
00117 #endif
00118
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122
00123 #define log_verbose(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_VERBOSE, \
00124 NANOHTTP_LOG_LEVEL_VERBOSE_STRING " %s: " fmt "\n", \
00125 __FUNCTION__, ## __VA_ARGS__)
00126
00127 #define log_debug(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_DEBUG, \
00128 NANOHTTP_LOG_LEVEL_DEBUG_STRING " %s: " fmt "\n", \
00129 __FUNCTION__, ## __VA_ARGS__)
00130
00131 #define log_info(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_INFO, \
00132 NANOHTTP_LOG_LEVEL_INFO_STRING " %s: " fmt "\n", \
00133 __FUNCTION__, ## __VA_ARGS__)
00134
00135 #define log_warn(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_WARN, \
00136 NANOHTTP_LOG_LEVEL_WARN_STRING " %s: " fmt "\n", \
00137 __FUNCTION__, ## __VA_ARGS__)
00138
00139 #define log_error(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_ERROR, \
00140 NANOHTTP_LOG_LEVEL_ERROR_STRING " %s: " fmt "\n", \
00141 __FUNCTION__, ## __VA_ARGS__)
00142
00143 #define log_fatal(fmt, ...) _nanohttp_log_printf(NANOHTTP_LOG_FATAL, \
00144 NANOHTTP_LOG_LEVEL_FATAL_STRING " %s: " fmt "\n", \
00145 __FUNCTION__, ## __VA_ARGS__)
00146
00148 #endif