『にわ管』側のログが取れない

調子良くドメイン分離した『にわ管』だが、問題は立て続ける。ひ〜〜(涙)
今回の問題です。
ログの中身が「common」のリテラルで埋め尽くされています。
何が起きているの?

ログのフォーマットをしているところは、ここだけな筈。

使っているのは、ここだけだと思う。

Geminiさんに聞いて、combinedから、専用の名称my-combinedに変更したところ。
結果はこうでした。

% tail niwakan-access_log

そこで今度は、Google AIさんにも参加して貰う。
頼るときには頼れる男。ってか頼りまくっているな(笑)

AIさんに言われて、コマンドを打ち込んでみる。
Includeされたファイルを確認してたのね。(知らんでただコピペしてたよ)
% apachectl -DDUMP_INCLUDES

そうして気が付いた。
VirtualHost絡みでもう一つファイルを読み込んでいたことを。
そう、自動更新の証明書発行で作られたものだね。(Googleのサイト証明書を取得してみる(2)参照)

こっちを見てみる。
% cat extra/httpd-vhosts-le-ssl.conf

ここにもniwakan-access_logがあった、それもcommon!

AIさんは、この中に LogFormat の my-combined を追加した後、common を my-combined に書き換えてみよう。とのアドバイス。
しかし手を抜きたいので、my-conbaind だけ書き換えてみる。

ダメでした〜〜。
% tail niwakan-access_log

なので、LogFormatも追加する。
うぉう、出てきたよぉ〜〜(喜)
% tail niwakan-access_log

何これ、一々全部に同じ定義入れないといけないの?
面倒臭ぇ〜(涙)

そこでAIさんのアドバイスが炸裂。

実は、 という枠の中に書かれた LogFormat は、他のファイル(Include されたVirtualHostファイルなど)に引き継がれない(スコープが閉じている)場合があるのです。そのため、VirtualHost側からは「そんなフォーマット名前は知らないよ!」となり、未定義扱いになってしまっていました。

解決策:枠から「完全に外」へ出す

もし、httpd.conf の中で の外(完全に枠から飛び出た場所)に定義を置くと、Apache全体で共有される「真のグローバル定義」になります。

やってみるかぁ。
先ずhttpd.confでは、LogFormat my-combined1行を外に出す。(中にも残してある)

次に、extra/httpd-vhosts-le-ssl.conf、コメントにしてLogFormatを外す。(上手く行かなかった時の為の暫定処置)

これでログに問題がなければ、完全消去可能。
で、結果は問題なさそう。
ログは出ていて、my-combinedのリテラルは出ていない模様。

ところで、こんな面倒なことになるのって可笑しくね。
楽するために纏めて定義させる筈が意味を成していない。
不満を言っても良いだろう? ね!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)