Сегодня открыл для себя логирование через Jabber.
Не знаю, насколько это эффективно, но мне очень понравилось. У меня есть задача, которая выполняется раз в неделю - это перенос информации из online таблицы в хранилище.
Jabber-ом мы пользуемся для общения, вот я и подумал, раз уж мы все там висим, почему бы не выводить сообщения прямо туда. Конечно, можно еще отправлять и на почту, но это уже для гурманов.
Пересмотрел пару-тройку модулей с CPAN, остановился на Log::Dispatch::Jabber. Он более чем подходит для логирования:)
Вот небольшой пример кода
use Log::Dispatch::Jabber; use DBI; my $dsn = "DBI:Pg:dbname=$database"; # #skip code # eval { my $dbh = DBI->connect($dsn, $login, $password); #выполняем работу здесь $dbh->disconnect; }; my $dispatcher = Log::Dispatch->new(); my $jabber = Log::Dispatch::Jabber->new( name => 'jabber', min_level => 'debug', login => { hostname => 'jabber_server', port => 5222, username => 'logger', password => 'strong_password', resource => 'logger' }, to => ['s.gulko@jabber_server','it@jabber_server'] ); $dispatcher->add($jabber); if (my $error = $@) { $dispatcher->log( level => 'error', message => 'Во время работы возникла ошибка: '.$error ); }else{ $dispatcher->log( level => 'info', message => 'Все классно, задание выполнено успешно' ); }

Jabber хорошая штука :)
У jabber есть еще преимущество в сравнении с email: можно гарантировать доставку (точнее протокол совершенно четко дает понять, прошло сообщение или нет, и есть ли человек в онлайне, и также предусмотрено отличие, например, когда человек заходит с нормального компьютера или с мобильного, и легко это обработать). Плюс на Jabber довольно удобно делать сервисы-автоответчики (например, можно сделать сервис, регулярно присылающий информацию о загрузке системы, причем очень легко сделать чтобы он не отправлял сообщения в оффлайн).
Единственный серьезный минус Jabber, то что разработчики все сделали на базе XML, тогда как для действительно высокопроизводительных приложений, было-бы разумно взять более легкую базу протокола - JSON или YAML.
Хмм... классная идея
как раз есть несколько точек, куда это стоило бы прикрутить.
Спасибо, вообщем.