日志模塊ngx_errlog_module對於支持可變參數平台提供的三個接口
#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, ...);
參數:
(1)level
當前這條日志的級別

使用ngx_log_error記錄日志時,傳入level的級別小於等於log參數中級別(通常在nginx.conf中配置),就會輸出日志內容,否則被忽略
ngx_log_debug中level代表日志類型

(2)log
處理請求時,http_request_t中有一個ngx_log_t成員,可以傳給ngx_log_error、ngx_log_debug記錄日志。讀取配置時,ngx_conf_t也有log成員記錄日志
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使用
};
(3)err
錯誤碼,一般是執行系統調用失敗后的errno參數,err不為0時,nginx會輸出這個錯誤碼及字符串形式的錯誤消息。
(4)fmt
格式化參數,類似用printf。
nginx提供的不支持可變參數的調試日志接口

