# **********************************************************
# 過去ログ処理
# **********************************************************
sub WritePastLog
{
local($move_row);
# ログデータを配列として読み込み
local(@file) = GetFile( "./$GET{'INI_LOGFILE'}" );
# MAX 行数に達していたら、最終行を取得
if ( $#file + 1 >= $GET{'INI_MAXROW'} ) {
$move_row = $file[$#file];
}
else {
return;
}
# 最終行以外を書き込む
open( LOG_FILE,">./$GET{'INI_LOGFILE'}" );
WriteArray( LOG_FILE, 0, $#file-1, @file );
close(LOG_FILE);
}
# 過去ログディレクトリが存在しない場合は作成
if ( !FileExist( "./$GET{'INI_PASTDIR'}") ) {
mkdir( "./$GET{'INI_PASTDIR'}" );
# 過去ログファイルを作成
local(($sec,$min,$hour,$mday,$mon,$year)) = localtime(time);
local($past_name) = sprintf("%04d%02d%02d%02d%02d%02d",
$year+1900,$mon+1,$mday,$hour,$min,$sec);
open( LOG_FILE,">./$GET{'INI_PASTDIR'}/$past_name.csv" );
close(LOG_FILE);
}
# 過去ログディレクトリの最新ファイル名を取得
opendir( DIR, "./$GET{'INI_PASTDIR'}" );
local(@arr_file) = ();
local($count) = 0;
local($filename);
while( $filename = readdir(DIR) ) {
if ( $filename ne '.' && $filename ne '..' ) {
$arr_file[$count] = $filename;
$count++;
}
}
closedir(DIR);
@arr_file2 = reverse( @arr_file );
local($cur_past) = "./$GET{'INI_PASTDIR'}/$arr_file2[0]";
# 過去ログデータを配列として読み込み
local(@file) = GetFile( $cur_past );
# MAX 行になっていたら、新しいファイルを作成
if ( $#file + 1 >= $GET{'INI_PASTMAXROW'} ) {
local(($sec,$min,$hour,$mday,$mon,$year)) = localtime(time);
local($past_name) = sprintf("%04d%02d%02d%02d%02d%02d",
$year+1900,$mon+1,$mday,$hour,$min,$sec);
$cur_past = "./$GET{'INI_PASTDIR'}/$past_name.csv";
open( LOG_FILE, $cur_past );
close(LOG_FILE);
}
# 過去ログデータを配列として読み込み
local(@file) = GetFile( $cur_past );
# ログファイルを書き込みモードでオープン
open( LOG_FILE,">$cur_past" );
# カレントログのはみ出したデータの書き込み
print LOG_FILE $move_row;
# 元々のデータを書き込み
WriteArray( LOG_FILE, 0, $#file, @file );
close(LOG_FILE);