Spec-Zone.ru › nginx

Лог отладки

  • Лог отладки для выбранных клиентов
  • Ведение лога в циклическом буфере памяти

Для включения лога отладки nginx необходимо настроить поддержку отладки во время сборки:

./configure --with-debug ...

Затем уровень 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

и затем задать уровень debug. Версия двоичного файла nginx для Windows всегда собирается с поддержкой лога отладки, поэтому достаточно задать только уровень 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

Или с помощью скрипта lldb следующим образом:

expr ngx_log_t *$log = ngx_cycle->log
expr while ($log->writer != ngx_log_memory_writer) { $log = $log->next; }
expr ngx_log_memory_buf_t *$buf = (ngx_log_memory_buf_t *) $log->wdata
memory read --force --outfile debug_log.txt --binary $buf->start $buf->end

© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/debugging_log.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API