Nginx 开启调试日志

本文将介绍怎样去启动调试日志。

要启用调试日志,在nginx生成期间需要配置以支持调试:

./configure --with-debug ...

然后,应该使用 ERROR_LOG 指令来设置调试级别:

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

然后设置调试级别。

Windows 的 nginx 二进制版本总是带有调试日志支持的,所以只设置调试级别就足够了。注意,在不指定 debug 级别的情况下重新定义日志将禁用调试日志。

在下面的示例中,重新定义 server 级别的日志将禁用此服务器的调试日志:

# 全局定义日志
error_log /path/to/log debug;

http {
    server {
        # 重新定义日志
        error_log /path/to/log;
        ...

为了避免这种情况,应该注释掉重新定义日志的行,或者添加 debug 级别规范:

# 定义全局日志
error_log /path/to/log debug;

http {
    server {
        # 重新定义日志,且设置为 debug 级别
        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
最困难的事情就是认识自己。——希腊
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号