On this page
调试日志
要启用调试日志,需要将 nginx 配置为在构建期间支持调试:
./configure --with-debug ...
然后应使用error_log指令设置debug
级别:
error_log /path/to/log debug;
要验证 nginx 是否配置为支持调试,请运行nginx -V
命令:
configure arguments: --with-debug ...
预先构建的Linux软件包提供开箱即用的调试日志支持,其中包含nginx-debug
二进制文件(1.9.8),可使用以下命令运行
service nginx stop
service nginx-debug start
然后设置debug
级别。 Windows 的 nginx 二进制版本始终带有调试日志支持,因此仅设置debug
级别即可。
请注意,在未指定debug
级别的情况下重新定义日志将禁用调试日志。在下面的示例中,在server级别上重新定义日志将禁用此服务器的调试日志:
error_log /path/to/log debug;
http {
server {
error_log /path/to/log;
...
为了避免这种情况,要么重新定义日志的行应被注释掉,要么还应添加debug
级别规范:
error_log /path/to/log debug;
http {
server {
error_log /path/to/log debug;
...
选定客户端的调试日志
也可以只为选定的客户地址启用调试日志:
error_log /path/to/log;
events {
debug_connection 192.168.1.1;
debug_connection 192.168.10.0/24;
}
记录到循环内存缓冲区
调试日志可以写入循环内存缓冲区:
error_log memory:32m debug;
即使负载很高,登录到debug
级别的内存缓冲区也不会对性能产生重大影响。在这种情况下,可以使用gdb
脚本提取日志,如下所示:
set $log = ngx_cycle->log
while $log->writer != ngx_log_memory_writer
set $log = $log->next
end
set $buf = (ngx_log_memory_buf_t *) $log->wdata
dump binary memory debug_log.txt $buf->start $buf->end