nginx调试日志

本文介绍了如何在Nginx中启用调试日志,重点是使用`--with-debug`选项,并调整`error_log`指令以记录详细的调试信息。通过设置日志级别,例如`debug`,可以获取所有级别的信息,但默认情况下,`debug`级别信息不会被记录到`info`级别或更低的日志中。
摘要由CSDN通过智能技术生成

转载http://lenky.info/


第一:打开debug模式进行编译,简单操作如下:
sudo ./configure–with-debug
sudo make
sudo make install

应注意–with-debug选项,记得打开,不光这篇文章,后面的其它文章都在打开它的基础上进行的讨论。


第二:合理设置配置文件:默认情况是/usr/local/nginx/conf/nginx.conf中的http块的server块中添加

error_log /mnt/hgfs/ubuntu-share/soft/source/log/error.logdebug;


debug级别会记录所有信息,这点在源文件
ngx_log.c
内的函数
ngx_set_error_log_levels()
的最后几行代码:
} else if (log->log_level == NGX_LOG_DEBUG) {
log->log_level = NGX_LOG_DEBUG_ALL;
}
可以看到,如果设置为debug级别,则程序自动扩为NGX_LOG_DEBUG_ALL,

以记录所有的打印信息。


第三:如果觉得debug把所有的信息都记录下来,不便于定位信息,则可以再加一条配置信息,以缩减记录信息的数目:
error_log  logs/error.log notice;
error_log  logs/error.log debug_http;

这样,就仅仅记录与http相关的调试信息。


第四:总得来说,nginx记录日志信息分两个级别,第一个级别的取值为如下之一

“stderr”, “emerg”, “alert”, “crit”, “error”,”warn”, “notice”, “info”, “debug”

日志级别从左往右依次降低,假如配置文件nginx.conf中指定日志级别为info时候,则左边直到info是可以输出到日志中的,而debug是不能输到日志中的。

这些值是互斥的,也就是说只能取其中之一,如果在配置文件里加了像如下这种两条配置项:
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
那么启动nginx将报错如下:
lenky@lenky-desktop:/usr/local/nginx/sbin$ sudo ./nginx
src/core/ngx_conf_file.c 1163 : 1000000
2009/11/18 21:44:46 [emerg] 7027#0: duplicate log level “info” in /usr/local/nginx/conf/nginx.conf:14
即:日志级别配置重复。
如果我们指定第一个级别为”debug”,那么nginx还允许我们指定第二级别:
“debug_core”, “debug_alloc”, “debug_mutex”, “debug_event”,
“debug_http”, “debug_mail”, “debug_mysql”
第二级别的指定是多选的,因此可以有多条关于第二级别的配置项目:
error_log  logs/error.log debug_http;
error_log  logs/error.log debug_core;
注意:在且仅在第一个级别为”debug”时才可以有第二级别的配置,其它第一级别情况下指定第二级别将无法启动nginx,比如在这种:
error_log  logs/error.log notice;
error_log  logs/error.log debug_http;
配置下,启动nginx将获得如下错误信息:
lenky@lenky-desktop:/usr/local/nginx/sbin$ sudo ./nginx
src/core/ngx_conf_file.c 1163 : 1000000
2009/11/18 21:50:33 [emerg] 7145#0: invalid log level “debug_http” in /usr/local/nginx/conf/nginx.conf:10
lenky@lenky-desktop:/usr/local/nginx/sbin$
stderr无法配置,
ngx_set_error_log_levels的第一个for循环是从1开始的,bug?在后面的nginx版本不知道更新没有。
所以emerg是级别最低的?即只有在发送错误时才记录日志?待查
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值