Squid はユーザーのサイト訪問ログを生成します。/var/squid/logs/access.log
6か月以上経過したアイテムを削除したいと思います。
私は毎週このスクリプトを実行します。私はPerlスクリプトやそのようなものを考えました。
次のようになりますaccess.log
。
項目は次のように生成されます。
IP - - [15/Oct/2011:02:04:32 -400]
答え1
この問題に対する一般的な回避策は、ファイルから古いエントリを削除するのではなく、現在のログファイルに現在のエントリのみを含めるようにログファイル循環を使用することです。
これはすべてlogrotate
プログラムによって処理されます。次の構成では、要件を大まかに満たす必要があります。過去6ヶ月間のログエントリをアーカイブし、/var/squid/logs/access.log
毎週ファイルを置き換えます。
/var/squid/logs/access.log {
weekly
rotate 26
missingok
nocreate
sharedscripts
postrotate
test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
endscript
}
ログファイルのデータに本当に興味がある場合は、そのデータを変更しないでください。
答え2
ソリューションnewsyslog
:
# logfile [owner:group] mode count when flags
/var/squid/logs/access.log root 644 26 $W0D0 JN
ログファイルは削除される前に26回循環されます。$W0D0
毎週日曜日の1時に回転することを示します0:00
。
このフラグは、J
newsyslogが圧縮回転ファイルを使用する必要があることを示しますbzip2
。
このフラグは、N
信号を送信する必要があるプロセスがないことを示します。