/ домой \ | \ темы / |
21/01/2009 09:32 nachash: |
Здравствуйте, а можно к small http под виндой прикрутить какой-нибудь внешний анализатор логов, без особого шаманства? Задача такая: с удалённой машины отслеживать статистику сервера в более или менее реальном времени. Что касается штатного веб-интерфейса, то им не очень удобно, предпочитаю периодически заходить на сервер и просматривать вручную его окно или логи. Кстати, вдогонку вопрос: как вызвать окно сервера, если он запущен как служба? Службе разрешено взаимодействовать с десктопом и в настройках сервера иконка в трее разрешена, но её-таки нет.
|
22/01/2009 16:41 Max: |
Окно появляется если поставить службу на паузу. Преобразовать логи к формату апача можно не сложным скриптом: open(IFILE,"<$ARGV[0]") || die("Cant open source file"); open(OFILE1,">access$ARGV[0]") || die("Cant open target file"); open(OFILE2,">ref$ARGV[0]") || die("Cant open target file"); open(OFILE3,">error$ARGV[0]") || die("Cant open target file"); while(<IFILE>) { chop $_; if($_ eq ''){$ip=''; $dat=''; $tim=''; $url=''; $prev='';} else {($a,$b,$c)=split(/\>/, $_ ,3); if($a eq '!-') {($dat,$tim,$ip)=split(/ /, $b ,3); $ip =~ tr/\[\://d; } else {($a,$b)=split(/ /, $_ ,2); if( $a eq 'GET' || $a eq 'POST' ) { ($url,$b)=split(/ /, $b ,2); printf OFILE1 '%s - - [%s/2002 %s] "%s" 200 ',$ip,$dat,$tim,$_; } elsif($a eq 'Error.' ) { printf OFILE3 '[%s/2002 %s] access to %s failed for %s, reason: %s ',$dat,$tim,$prev,$ip,$b; } elsif($a eq 'Error' ) { printf OFILE3 '[%s/2002 %s] failed for %s, reason: %s ',$dat,$tim,$ip,$b; } elsif($a eq 'Referer:' ){printf OFILE2 '%s -> %s ',$b,$url; } else{$prev=$_;} } } } close IFILE; close OFILE1; close OFILE2; close OFILE3; |