日誌模塊ngx_errlog_module對於支持可變參數平臺提供的三個接口nginx
#define ngx_log_error(level, log, ...) \ if ((log)->log_level >= level) ngx_log_error_core(level, log, __VA_ARGS__) #define 、ngx_log_debug (level, log, args...) \ if ((log)->log_level & level) \ ngx_log_error_core(NGX_LOG_DEBUG, log, args) void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, const char *fmt, ...);
參數:函數
當前這條日誌的級別
ui
使用ngx_log_error記錄日誌時,傳入level的級別小於等於log參數中級別(一般在nginx.conf中配置),就會輸出日誌內容,不然被忽略atom
ngx_log_debug中level表明日誌類型
debug
處理請求時,http_request_t中有一個ngx_log_t成員,能夠傳給ngx_log_error、ngx_log_debug記錄日誌。讀取配置時,ngx_conf_t也有log成員記錄日誌3d
typedef u_char *(*ngx_log_handler_pt) (ngx_log_t *log, u_char *buf, size_t len); struct ngx_log_s { ngx_uint_t log_level; //日誌級別 ngx_open_file_t *file; //日誌文件 ngx_atomic_uint_t connection; //鏈接數,不爲0時輸出到日誌中 ngx_log_handler_pt handler;//記錄日誌時的回調函數 void *data;//模塊自定義。例如http模塊data爲請求上下文 char *action;//當前動做,配合handler使用 };
錯誤碼,通常是執行系統調用失敗後的errno參數,err不爲0時,nginx會輸出這個錯誤碼及字符串形式的錯誤消息。調試
格式化參數,相似用printf。日誌
nginx提供的不支持可變參數的調試日誌接口
code