下午好,
我有一个小型的Perl脚本,主要是模拟Minecraft服务器日志上的tail -f
功能。该脚本检查特定的字符串,并以各种方式进行操作。
以下是脚本的简化版本:
#!/usr/bin/perl
use 5.010;
use warnings;
use strict;
my $log = "PATH TO LOG";
my $curpos;
open(my $LOGFILE, $log) or die "Cannot open log file";
# SEEK TO EOF
seek($LOGFILE, 0, 2);
for (;;){
my $line = undef;
seek($LOGFILE,0,1); ### clear OF condition
for($curpos = tell($LOGFILE); <$LOGFILE>; $curpos = tell($LOGFILE)){
$line = "$_ \n";
if($line =~ /test string/i){
say "Found test string!";
}
}
sleep 1;
seek($LOGFILE,$curpos,0); ### Setting cursor at the EOF
}
当我有一个测试服务器时,一切似乎都正常。但在生产环境中,server.log文件会被轮换。当日志轮换时,脚本仍然持有原始文件,而不是替换它的文件。 例如,监视server.log文件,server.log被移动并压缩到logs/date_x.log.gz,server.log现在变成了一个新文件。
我该如何调整我的脚本以监视文件名“server.log”,而不是当前称为“server.log”的文件?