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 に答える