#ifndef _NGX_LOG_H_INCLUDED_
#define _NGX_LOG_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
#define NGX_LOG_STDERR …
#define NGX_LOG_EMERG …
#define NGX_LOG_ALERT …
#define NGX_LOG_CRIT …
#define NGX_LOG_ERR …
#define NGX_LOG_WARN …
#define NGX_LOG_NOTICE …
#define NGX_LOG_INFO …
#define NGX_LOG_DEBUG …
#define NGX_LOG_DEBUG_CORE …
#define NGX_LOG_DEBUG_ALLOC …
#define NGX_LOG_DEBUG_MUTEX …
#define NGX_LOG_DEBUG_EVENT …
#define NGX_LOG_DEBUG_HTTP …
#define NGX_LOG_DEBUG_MAIL …
#define NGX_LOG_DEBUG_STREAM …
#define NGX_LOG_DEBUG_FIRST …
#define NGX_LOG_DEBUG_LAST …
#define NGX_LOG_DEBUG_CONNECTION …
#define NGX_LOG_DEBUG_ALL …
ngx_log_handler_pt;
ngx_log_writer_pt;
struct ngx_log_s { … };
#define NGX_MAX_ERROR_STR …
#if (NGX_HAVE_C99_VARIADIC_MACROS)
#define NGX_HAVE_VARIADIC_MACROS …
#define ngx_log_error(level, log, ...) …
void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
const char *fmt, ...);
#define ngx_log_debug(level, log, ...) …
#elif (NGX_HAVE_GCC_VARIADIC_MACROS)
#define NGX_HAVE_VARIADIC_MACROS …
#define ngx_log_error …
void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
const char *fmt, ...);
#define ngx_log_debug …
#else
#define NGX_HAVE_VARIADIC_MACROS …
void ngx_cdecl ngx_log_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
const char *fmt, ...);
void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
const char *fmt, va_list args);
void ngx_cdecl ngx_log_debug_core(ngx_log_t *log, ngx_err_t err,
const char *fmt, ...);
#endif
#if (NGX_DEBUG)
#if (NGX_HAVE_VARIADIC_MACROS)
#define ngx_log_debug0 …
#define ngx_log_debug1 …
#define ngx_log_debug2 …
#define ngx_log_debug3 …
#define ngx_log_debug4 …
#define ngx_log_debug5 …
#define ngx_log_debug6 …
#define ngx_log_debug7 …
#define ngx_log_debug8 …
#else
#define ngx_log_debug0 …
#define ngx_log_debug1 …
#define ngx_log_debug2 …
#define ngx_log_debug3 …
#define ngx_log_debug4 …
#define ngx_log_debug5 …
#define ngx_log_debug6 …
#define ngx_log_debug7 …
#define ngx_log_debug8 …
#endif
#else
#define ngx_log_debug0(level, log, err, fmt) …
#define ngx_log_debug1(level, log, err, fmt, arg1) …
#define ngx_log_debug2(level, log, err, fmt, arg1, arg2) …
#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) …
#define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) …
#define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) …
#define ngx_log_debug6(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6) …
#define ngx_log_debug7(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \
arg6, arg7) …
#define ngx_log_debug8(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, \
arg6, arg7, arg8) …
#endif
ngx_log_t *ngx_log_init(u_char *prefix, u_char *error_log);
void ngx_cdecl ngx_log_abort(ngx_err_t err, const char *fmt, ...);
void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
u_char *ngx_log_errno(u_char *buf, u_char *last, ngx_err_t err);
ngx_int_t ngx_log_open_default(ngx_cycle_t *cycle);
ngx_int_t ngx_log_redirect_stderr(ngx_cycle_t *cycle);
ngx_log_t *ngx_log_get_file_log(ngx_log_t *head);
char *ngx_log_set_log(ngx_conf_t *cf, ngx_log_t **head);
static ngx_inline void
ngx_write_stderr(char *text)
{ … }
static ngx_inline void
ngx_write_stdout(char *text)
{ … }
extern ngx_module_t ngx_errlog_module;
extern ngx_uint_t ngx_use_stderr;
#endif