Форум

/ домой \ \ темы /



Тема: Вопрос по формату логов

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;


Пользователь: Пароль: Новый пользователь:   Запомнить пароль: