CGI-BBS > アクセスカウンタ > その他 > LOG Analyzer v1.06 logフォルダ内のデータ保存件数


カレッヂ
カレッヂ


質問者 D.Ogami  投稿日 11/4(日) 10:11:03
同様の質問は既出のようですが、お答えがついていなかったので、私からも質問させてください。

LOG Analyzer v1.06を使用しています。logフォルダ内にはlog.plによって2日分のログデータが保管され、これをanalyze.cgiが参照しているわけですが、バックデータとして3日前よりも以前のログデータを保存しておきたいと思います。下記のいずれかはカスタマイズによって実現可能でしょうか?

案1.すべてのログデータを削除しないようにする。
案2.限定日数分(たとえば10日分とか)のログデータだけ保存し、それ以前のログデータを消去する。
案3.上記の案が不可能な場合、他のCGI等で、ログデータを自動的に他のディレクトリへ同期させてバックアップをとる。


前回の質問者のかたが聞いておられましたことと同じですが、案1を実現する場合は、log.plの16行目

if (-e $delete_log) { unlink($delete_log); }

という行を削除もしくはコメントアウトすれば良いのでしょうか?


よろしくご教示お願いします。
質問者 D.Ogami  [削除]  投稿日 11/6(火) 11:27:35
log.plの16行目

if (-e $delete_log) { unlink($delete_log); }

を#でコメントアウトすることで、「案1.すべてのログデータを削除しないようにする。」は実現できました。ありがとうございました。

では、「案2.限定日数分(たとえば10日分とか)のログデータだけ保存し、それ以前のログデータを消去する。」方法はなにかありますでしょうか?
無限にログファイルが増え続けると困るので、このままではある時期にFTPで手動削除しなければなりません。よろしくご教示お願いします。

回答者 あけび  [削除]  投稿日 11/6(火) 13:40:46
if (-e $delete_log) { unlink($delete_log); }

この行を消した位置に下記4行を追加して下さい。

opendir(DIR,$log_dir);
@files = grep(/^\d{8}$/ && int(-M "$log_dir$_") >= 10,readdir(DIR));
closedir(DIR);
foreach(@files) { unlink("$log_dir$_");}


“10” の部分が保持日数で、この日数を超えたものを削除します。
質問者 D.Ogami  [削除]  投稿日 11/7(水) 00:50:30
あけび様、適切なご回答ありがとうございました。
ご教示いただきましたとおり、log.plに記述しましたところ、指定した日数分以前のログファイルを自動的に削除することができました。m(_ _)m

このページは終了したので返信(回答)は書きこめません

Web裏技