Apacheのログ

しばらくUbuntuを触ってなくて、「Apache、大丈夫かなぁ?」と思うことってありますよね、ありますよ、ハイ。そういうとき、うる覚えの頭で「Apacheのログって確か /var/log だったよね」と「la /var/log」(alias la='ls -alg --color=auto')なんてやると、/var/log/apache2 なんかがあるもんだから、「そうだ、そうだ、/var/log/apache2/access.log と error.log を見ればいいんだ」なんて思いませんか?

本題

で、こうやってみるわけです。

  • xam:~$ tail /var/log/apache2/access.log
  • xam:~$ tail /var/log/apache2/error.log
    [Sun Jun 01 06:25:03 2008] [notice] Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.3 configured -- resuming normal operations

がーん、アクセスログはないし、エラーログは6/1の1件だけだなんて。GoogleBot とか BaiduBot なんかのご贔屓さんが毎時毎時来てくれてたはずなのにどうしたんだろうと。

本題の本題

ここでハタと気づくわけです。そうだ、Apache の設定を見よう。

xam:~$ e /etc/apache2/sites-available/my_site
NameVirtualHost *:80

  ErrorLog /home/www/satake7.net/log/error.log
  CustomLog /home/www/satake7.net/log/access.log combined

なんだ、ここで指定してたんじゃんかよ、というお話です。

Tips

あっ、そうだ、ほんとに「へぇー」って思ったことがあったのでメモっておきます。
このログをとってるディレクトリをちょっとした事情( subversionリポジトリとの整合性がとれなくなったので、ディレクトリを新しく作ってチェックアウトしたいなということ)があって mv して作り直したんです。
Windows だとサービスがアクセスしてるファイルを動かそうとすると、その時点で「誰かが使ってるから動かせないよ」というエラーが出るんですが、Linuxはそんなエラー、出さないんですね。その代わり、移した先のファイルをそのまま使います。
つまり、最初、/log1/access.log に書いていたとして、/log1 を /log2 へ mv すると、アクセスログは /log2/access.log に書き続けられます。設定ファイルには /log1/access.log と書いてあるので「なんで、ログ書かないんだぁ、おかしいなぁ」と悩まないようにメモしときます。(きっと、プロセスが使用しているデバイスなりファイルを特定する方法や、ファイルのリンクをたどる方法なんかがありそうですけど、いまのところ必要ないので深くは追求しません)

備忘録

  • Apacheの再起動
    s /etc/init.d/apache2 restart