/ 中存储网

Nginx error_log错误日志设置

2014-04-17 13:48:01 来源:ITJS.CN
关于 error_log 指令的解析

---- nginx-1.0.9 ---

error_log 配置:

error_log logs/xxx.log error | debug_core | debug_alloc

main()

{

//...

prefix = ./configure --prefix

ngx_init_cycle(ngx_cycle_t *old_cycle)

{

log.log_level = NGX_LOG_NOTICE;

log = ngx_log_init() = $prefix + NGX_ERROR_LOG_PATH  = $prefix/logs/error.log;

ngx_conf_param(ngx_conf_t *cf)

{

ngx_error_log()

{

cycle->new_log = $conf_prefix/logs/xxx.log 或者 $prefix/logs/xxx.log;

ngx_log_set_levels()

{

value = cf->args->elts;

/* 从这段代码上看:

error_log 指令的日志级别配置分为 错误日志级别和调试日志级别

且 错误日志只能设置一个级别 且 错误日志必须书写在调试日志级别的前面 且 调试日志可以设置多个级别

其他配置方法可能达不到你的预期.

*/

for (i = 2; i < cf->args->nelts; i++) {

found = 0;

for (n = 1; n <= NGX_LOG_DEBUG; n++) {

if (ngx_strcmp(value[i].data, err_levels[n].data) == 0) { /* 这里匹配的是 错误日志级别 */

log->log_level = n;

found = 1;

break;

}

}

for (n = 0, d = NGX_LOG_DEBUG_FIRST; d <= NGX_LOG_DEBUG_LAST; d <<= 1) { /* 这里匹配的是 调试日志级别 */

if (ngx_strcmp(value[i].data, debug_levels[n++]) == 0) {

log->log_level |= d;

found = 1;

break;

}

}

}

if (log->log_level == NGX_LOG_DEBUG) {

log->log_level = NGX_LOG_DEBUG_ALL;

}

return NGX_CONF_OK;

}

}

}

cycle->log = &cycle->new_log;

pool->log = &cycle->new_log;

}

//...

}

-----------

总结

语法:

error_log file [ debug | info | notice | warn | error | crit ]  | [{  debug_core | debug_alloc | debug_mutex | debug_event | debug_http | debug_mail | debug_mysql } ]

日志级别 = 错误日志级别 | 调试日志级别; 或者

日志级别 = 错误日志级别;

错误日志的级别: emerg, alert, crit, error, warn, notic, info, debug, 

调试日志的级别: debug_core, debug_alloc, debug_mutex, debug_event, debug_http, debug_mail, debug_mysql,

error_log 指令的日志级别配置分为 错误日志级别和调试日志级别

且 错误日志只能设置一个级别 且 错误日志必须书写在调试日志级别的前面 且 调试日志可以设置多个级别

其他配置方法可能达不到你的预期.