apache access_logのファイル名を可変にする方法
access_logのファイル名を10分単位で任意のファイル名に変更したい場合どうすれば良いか調べた結果。
1. VirtualHost
<VirtualHost *:80>
ServerName xxx.xxx
SetEnvIf Request_URI \/favicon.ico$ no_log
Logformat "%{%Y-%m-%d %T}t %A %{Client-Ip}i %{Referer}i %{User-Agent}i %D" common
CustomLog "|/usr/local/bin/log.sh" common env=!no_log
</VirtualHost>
2. log.sh
#!/usr/bin/env bash
hostname=$(hostname)
while read line; do
timestamp=$(date '+%s')
prefix=$(($timestamp / 600))
echo $line >> /var/log/access/${prefix}_foo_${hostname}
done
<VirtualHost *:80>
ServerName xxx.xxx
SetEnvIf Request_URI \/favicon.ico$ no_log
Logformat "%{%Y-%m-%d %T}t %A %{Client-Ip}i %{Referer}i %{User-Agent}i %D" common
CustomLog "|/usr/local/bin/log.sh" common env=!no_log
</VirtualHost>
#!/usr/bin/env bash
hostname=$(hostname)
while read line; do
timestamp=$(date '+%s')
prefix=$(($timestamp / 600))
echo $line >> /var/log/access/${prefix}_foo_${hostname}
done
最初1つのログを処理してコマンドが終了する書き方をしていたら処理は動くけど以下のようなエラーが出るようになってしまったので上記のような継続的に標準入力を処理する方法に書き換える必要がありました。
apacheのログ出力は継続的にログを読み込むプロセスでなければいけないようですね。
AH00106: piped log program '/usr/local/bin/log.sh' failed unexpectedly
Author And Source
この問題について(apache access_logのファイル名を可変にする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/sjisjis/items/6a709b53e4fc192007d8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .