QSH(急に仕事で必要になったので)
概要
Apacheのログだけではないけれど、ファイルの中身を検索(grep)して、該当する行数をカウント(wc -l)して表示する。
ファイル名にワイルドカードが使えるので、複数ファイルをまとめてgrepできる。
gzip圧縮(.gz)がかかっているファイルも検索(zgrep)できる。
ついでにファイルごとに出力するので、ファイル単位で結果が得られる。
ちなみにLinux用。
スクリプト
#!/bin/bash
# greplogall - grep all log file
# SUNAGAWA Hiroyuki / Studio JamPack
# 2016.03.22
# target stringをログファイルの中から探して、行数をカウントするスクリプト
#
# USAGE ./greplogall.sh "target string" /var/log/ログファイル名
# ログファイル名はワイルドカード(*)が有効。
# しかしあまり大量のファイルを処理させると
# サーバの負荷が高くなるのでお止めになったほうが良い。
#
# 例: ./greplogall.sh "/hoge/ " /var/log/httpd/access_log.201511*
# 2015/11月のログ全部から /hoge/ を探して件数を返す。
targetstr=$1
shift
echo .
echo greplogall - grep all log file
echo SUNAGAWA Hiroyuki / Studio JamPack
echo 2016.03.22
echo .
while [ "$1" != "" ]
do
echo -n $targetstr
echo -n ","
echo -n $1
echo -n ","
if [[ $1 =~ .gz$ ]]; then
/usr/bin/zgrep $targetstr $1 | wc -l;
else
/bin/grep $targetstr $1 | wc -l;
fi
shift
done
exit 0
結果
/hoge/,/var/log/httpd/access_log.20160227.gz,40417
/hoge/,/var/log/httpd/access_log.20160228.gz,34528
/hoge/,/var/log/httpd/access_log.20160229.gz,21177
コツ
http://jamfunk.jp/hoge/のアクセスを検索したい場合は”/hoge/ “(スラッシュの後ろにスペース)で検索すると、”/hoge/example.html”などを回避できる。ただ、リファラにも引っかかるかもしれない。
なお
使用は自己責任