PDA

Просмотр полной версии : логи в ммс формата html


ludomir
17.01.2007, 07:25
хочу собственно иметь красивые логи, в перле не очень силен, знающие люди помогите советом, рассикжите может принцип, каим образом делается субж? )

Раххаль
17.01.2007, 21:58
Значит так.
1. Включаем цветные логи:
В Conf.pm меняем строку
$Conf::ansi_log=1; # write ansi escapes into logs if true
2. Включаем лог. У меня это сделано в конфиге например так:
hook
{
my ($day, $mon, $year) = (localtime)[3,4,5];
$year += 1900;
$mon += 1;
my $logname = "logs/#$day-$mon-$year.log";
MUD::logopen $logname;
} "connect";
3. Если хочется записывать также и время, когда происходит событие, то меняем в Conf.pm строку:
$Conf::timedlog=1; # timestamp each logged line
Но там по умолчанию по-моему некрасиво сделано. У меня чуть по-другому - я поменял в файле Mud.pm функцию clog:
sub clog($) {
if ($Conf::timedlog)
{
my ($sec, $min, $hour) = (localtime)[0,1,2];
$sec = "0$sec" if length $sec < 2;
$min = "0$min" if length $min < 2;
$hour = "0$hour" if length $hour < 2;
print $logfile "\033[1;30m$hour:$min:$sec>\033[0;37m ",($Conf::ansi_log?toansi($_[0]):CL::strip_colors($_[0])),
"\n" if $logfilename;
} else {
print $logfile ($Conf::ansi_log?toansi($_[0]):CL::strip_colors($_[0])),
"\n" if $logfilename;
}
}
4. Обрабатываем полученные ansi-логи и преобразовываем в html. Пара слов, почему не стоит писать сразу html: ansi - стандарт. Эти ansi-логи можно уже смотреть с помощью скажем less -r. А html можно раскрашивать кучей способов. Например:
Берем log-colorizer от dikiy отсюда: http://d.scn.ru/proj/mud/log-colorizer/
Ставим perl если не стоит: для винды - http://www.activestate.com/store/activeperl/download/, для всего остального - http://www.perl.org/get.html)
Натравливаем log-colorizer на ansi-лог:
perl log-colorizer.pl --from logname.log --to logname.html
После всего этого смотрим, что получилось. Если цвета не устраивают, то их можно поправить в начале полученного html в разделе CSS, а можно и в самом log-colorizer.

Напоследок пример лога, который я получил вот этим способом. Файлик надо в .html переименовать. Кстати, лог пишется после того, как проведены все замены и хайлайты.