a debugging log

来源:互联网 发布:第三方软件问题 编辑:程序博客网 时间:2024/06/17 16:51

调试日志

  • 选定客户端调试日志
  • 调试日志写到循环内存缓冲区

要启用调试日志, nginx需要在构建的时候进行配置以支持调试:

./configure --with-debug ...  

然后, debug级别应该用error_log指令设置:

error_log /path/to/log debug;

windows的nginx二进制版本总是会构建成支持调试日志, 所以只要设置debug级别就可以了.

要注意的是, 重新定义log, 而且没有指定debug级别, 将是调试日志不可用. 在下面的例子中, 在server块重新定义了log, 这将使这个server的调试日志不可用.

error_log /path/to/log debug;http {    server {        error_log /path/to/log;        ...

为了避免这种情况, 要不把重新定义的log注释掉, 要不就添加debug级别.

error_log /path/to/log debug;http {    server {    error_log /path/to/log debug;    ...

选定客户端调试日志

debug_connection也可以启用调试日志:

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->logwhile \$log->writer != ngx_log_memory_writer    set \$log = \$log->nextendset \$buf = (ngx_log_memory_buf_t *) \$log->wdatadump binary memory debug_log.txt \$buf->start \$buf->end
0 0