5

我在我正在处理的 apache 模块中有这段代码,它是使用 ap_hook_child_init() 注册的:

static class_name *mc;

static void child_init(apr_pool_t *pool, server_rec *s)
{
    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, "this pointer should be null: %pp", mc);
    mc  = mc_alloc();
    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, "this pointer should not be null: %pp", mc);
}

问题:我没有看到这些日志消息!

我确信这个函数正在被调用并且调用mc_alloc()正在工作,因为当我从模块的其他部分(如在请求处理程序中)登录时,我看到了日志消息并获得了指针的有效结果。这也告诉我日志记录正在工作。

是我的代码错误还是我的期望?在 ap_hook_child_init 回调期间不能发出日志消息吗?如果没有,我还能如何记录一个孩子被初始化?

4

1 回答 1

5

所以事实证明这不是代码问题,而是配置问题。

/etc/apache2/sites-enabled/my_site.conf我已经LogLevel Info在我的<VirtualHost>部分中设置,这显然没有为整个服务器设置它。

我通过从更改为 发现了这APLOG_INFO一点APLOG_CRIT。一旦我这样做了,消息就会出现在日志中。所以我知道服务器正在正确记录并且我的代码正在运行。

这使我相信存在单独的可能的 LogLevel 设置,并且我可能对我的位置过于具体。显然需要在该部分之外添加一个LogLevel Info指令<VirtualHost>来设置整个服务器以记录比默认更多的消息。

于 2012-06-10T02:19:07.977 回答