Apache2のログを各ユーザーごとに取得する


# mkdir /var/log/apache2/ユーザー名 ← ユーザー個別のログディレクトリ作製

# vi /etc/apache2/conf/httpd.conf ← apache2の設定ファイル編集

/~ユーザー名 の場合下記を追記

SetEnvIf Request_URI "/~ユーザー名/" ユーザー名 nolog
CustomLog logs/ユーザー名/access_log combined env=ユーザー名


バーチャルドメインの場合

<VirtualHost*.80>
ServerAdmin ユーザー名@aaa.net
DocumentRoot /home/ユーザー名/public_html
ServerName zzzz.xxxx.ne.jp
ErrorLog logs/ユーザー名/error_log ← ログを個別に取るように追記
CustomLog logs/ユーザー名/access_log combined env=!nolog ← ログを個別に取るように追記
</VirtualHost>

ログローテーションの設定



一定期間たまったログを古い物から削除する設定です。


# vi /etc/logrotate.d/apache2 ← 設定ファイル編集

Apache2のメインログの設定
/var/log/apache2/*log {
    daily ←  好みでdaily, weekly, monthlyのいずれかを指定
    rotate 14 ← ここで履歴の数を指定
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/apache2.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

上記のように、/etc/logrotate.confへローテートのスケジュールと
履歴回数を指定しておけば、指定した期間で古いログは削除されるようになります。

標準(上記設定を行わない状態)では、1週間単位で4週間のログが取得されるようになっています。


ユーザー用のログ設定を追記する
/var/log/apache2/*/*log {
    daily ←毎日という意味
    rotate 14 ←14日間という意味
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/apache2.pid 2>/dev/null` 2> /dev/null || true
    endscript
}
設定できたら保存




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.