Лог отладки
Для включения лога отладки 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