changeset 1449:c79501e16e26

Documented cyclic memory buffer support for error_log.
author Yaroslav Zhuravlev <yar@nginx.com>
date Wed, 08 Apr 2015 13:56:52 +0300
parents d3390895fe6e
children f5b5eefc43cb
files xml/en/docs/debugging_log.xml xml/en/docs/ngx_core_module.xml xml/ru/docs/debugging_log.xml xml/ru/docs/ngx_core_module.xml
diffstat 4 files changed, 69 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/xml/en/docs/debugging_log.xml
+++ b/xml/en/docs/debugging_log.xml
@@ -8,7 +8,7 @@
 <article name="A debugging log"
          link="/en/docs/debugging_log.html"
          lang="en"
-         rev="2">
+         rev="3">
 
 
 <section>
@@ -82,4 +82,30 @@ events {
 
 </section>
 
+
+<section id="memory" name="Logging to a cyclic memory buffer">
+
+<para>
+The debugging log can be written to a cyclic memory buffer:
+<programlisting>
+error_log memory:32m debug;
+</programlisting>
+Logging to the memory buffer on the <literal>debug</literal> level
+does not have significant impact on performance even under high load.
+In this case, the log can be extracted using
+a <command>gdb</command> script like the following one:
+<example>
+set $log = ngx_cycle->new_log
+
+while $log.writer != ngx_log_memory_writer
+    set $log = $log.next
+end
+
+set $buf = (ngx_buf_t *) $log.wdata
+dump binary memory log.txt $buf->start $buf->end
+</example>
+</para>
+
+</section>
+
 </article>
--- a/xml/en/docs/ngx_core_module.xml
+++ b/xml/en/docs/ngx_core_module.xml
@@ -10,7 +10,7 @@
 <module name="Core functionality"
         link="/en/docs/ngx_core_module.html"
         lang="en"
-        rev="11">
+        rev="12">
 
 <section id="example" name="Example Configuration">
 
@@ -145,7 +145,8 @@ analysis using a system debugger.
 <directive name="error_log">
 <syntax>
 <value>file</value> | <literal>stderr</literal> |
-<literal>syslog:</literal><literal>server</literal>=<value>address</value>[,<value>parameter</value>=<value>value</value>]
+<literal>syslog:</literal><literal>server</literal>=<value>address</value>[,<value>parameter</value>=<value>value</value>] |
+<literal>memory:</literal><value>size</value>
 [<literal>debug</literal> |
 <literal>info</literal> |
 <literal>notice</literal> |
@@ -173,6 +174,10 @@ If filename is not absolute, it is prefi
 The special value <literal>stderr</literal> selects the standard error file.
 Logging to <link doc="syslog.xml">syslog</link> can be configured by specifying
 the “<literal>syslog:</literal>” prefix.
+Logging to a
+<link doc="debugging_log.xml" id="memory">cyclic memory buffer</link>
+can be configured by specifying the “<literal>memory:</literal>” prefix and
+buffer <value>size</value>, and is generally used for debugging (1.7.11).
 </para>
 
 <para>
--- a/xml/ru/docs/debugging_log.xml
+++ b/xml/ru/docs/debugging_log.xml
@@ -8,7 +8,7 @@
 <article name="Отладочный лог"
          link="/ru/docs/debugging_log.html"
          lang="ru"
-         rev="2">
+         rev="3">
 
 
 <section>
@@ -80,4 +80,31 @@ events {
 
 </section>
 
+
+<section id="memory" name="Запись в кольцевой буфер в памяти">
+
+<para>
+Отладочный лог можно записывать в кольцевой буфер в памяти:
+<programlisting>
+error_log memory:32m debug;
+</programlisting>
+Запись в буфер в памяти на уровне <literal>debug</literal>
+не оказывает существенного влияния на производительность
+даже при высоких нагрузках.
+В этом случае лог может быть извлечён при помощи
+<command>gdb</command>-скрипта, подобного следующему:
+<example>
+set $log = ngx_cycle->new_log
+
+while $log.writer != ngx_log_memory_writer
+    set $log = $log.next
+end
+
+set $buf = (ngx_buf_t *) $log.wdata
+dump binary memory log.txt $buf->start $buf->end
+</example>
+</para>
+
+</section>
+
 </article>
--- a/xml/ru/docs/ngx_core_module.xml
+++ b/xml/ru/docs/ngx_core_module.xml
@@ -10,7 +10,7 @@
 <module name="Основная функциональность"
         link="/ru/docs/ngx_core_module.html"
         lang="ru"
-        rev="11">
+        rev="12">
 
 <section id="example" name="Пример конфигурации">
 
@@ -145,7 +145,8 @@ events {
 <directive name="error_log">
 <syntax>
 <value>файл</value> | <literal>stderr</literal> |
-<literal>syslog:</literal><literal>server</literal>=<value>адрес</value>[,<value>параметр</value>=<value>значение</value>]
+<literal>syslog:</literal><literal>server</literal>=<value>адрес</value>[,<value>параметр</value>=<value>значение</value>] |
+<literal>memory:</literal><value>размер</value>
 [<literal>debug</literal> |
 <literal>info</literal> |
 <literal>notice</literal> |
@@ -173,6 +174,10 @@ events {
 Специальное значение <literal>stderr</literal> выбирает стандартный файл ошибок.
 Запись в <link doc="syslog.xml">syslog</link> настраивается указанием префикса
 “<literal>syslog:</literal>”.
+Запись в
+<link doc="debugging_log.xml" id="memory">кольцевой буфер в памяти</link>
+настраивается указанием префикса “<literal>memory:</literal>” и
+<value>размера</value> буфера и как правило используется для отладки (1.7.11).
 </para>
 
 <para>