Как правильно писать логи из функции-обработчика запросов?
Igor Sysoev
is at rambler-co.ru
Tue Mar 11 18:21:22 MSK 2008
On Tue, Mar 11, 2008 at 08:05:00AM -0700, Sergey S. wrote:
> Здравствуйте.
>
> Написал простенький handler, но почему-то не получается писать из него логи
> с помощью ngx_log_error. nginx запускается с директивой "daemon off"; в
> других местах (например в ngx_http_test_merge_loc_conf) ngx_log_error
> работает как надо.
>
> Делал так. Когда встречается директива "mytest":
>
> static ngx_command_t ngx_http_test_commands[] = {
> // Install
> http-handler
>
> { ngx_string("mytest"),
> NGX_HTTP_MAIN_CONF|NGX_CONF_NOARGS,
> ngx_http_test_install_handler, // <<---------------------------------
> NGX_HTTP_LOC_CONF_OFFSET,
> 0,
> NULL },
> // ...
> ngx_null_command
> }
>
> Запускается установщик обработчика:
>
> static char* ngx_http_test_install_handler(ngx_conf_t *cf, ngx_command_t
> *cmd, void *conf)
> {
> ngx_http_core_loc_conf_t* clcf =
> static_cast<ngx_http_core_loc_conf_t*>(ngx_http_conf_get_module_loc_conf(cf,
> ngx_http_core_module));
> clcf->handler = ngx_http_test_handler;
>
> return NGX_CONF_OK;
> }
>
> Сам же обработчик выгладит очень просто:
>
> static ngx_int_t ngx_http_test_handler(ngx_http_request_t *r)
> {
> ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "test"); // Это
> сообщение никогда не отображается
> return NGX_OK;
> }
>
> Я где-то ошибся? Пробовал устанавливать обработчик через ngx_http_test_init
> - не помогло.
Такой обработчик можно ставить только внутри location:
- NGX_HTTP_MAIN_CONF|NGX_CONF_NOARGS,
+ NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list