squid access.logは6ヶ月以上古いエントリを削除します。

squid access.logは6ヶ月以上古いエントリを削除します。

Squid はユーザーのサイト訪問ログを生成します。/var/squid/logs/access.log6か月以上経過したアイテムを削除したいと思います。

私は毎週このスクリプトを実行します。私は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

このフラグは、Jnewsyslogが圧縮回転ファイルを使用する必要があることを示しますbzip2

このフラグは、N信号を送信する必要があるプロセスがないことを示します。

関連情報