Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > как сделать log rotation?


Автор: Valeria 26.9.2006, 10:19
Как проще всего узнать день,когда был создан лог-файл,чтобы создавать каждый день новый?
пыталась что-то сделать с переменной stat. уж больно там сложно - время в сек, с 1 января 1970 года.

Автор: Danissimo 26.9.2006, 10:40
Ответ на твой вопрос зависит от ответов на следующие:
- ты сама пишешь этот лог?
- если не ты сама, то как ты объяснишь той программе, что пишет в файл, что "а вот теперь надо писать в другой"?

Автор: Valeria 26.9.2006, 10:42
я сама пишу этот лог-файл.

Добавлено @ 10:47 
вообще можно наверное так: создавать лог-файл с сегодняшней датой в имени, а потом при каждом обращении проверять таким образом дату, если не совпало, значит удалить старый лог, если такая же, то писать в этот лог. это я знаю как сделать. а еще есть варианты?

Автор: amg 26.9.2006, 10:51
Цитата(Valeria @  26.9.2006,  10:42 Найти цитируемый пост)
а еще есть варианты
Я бы воспользовался каким-нибудь модулем: Log::Dispatch::FileRotate, Log::Agent::Rotate, Logfile::Rotate

Автор: Valeria 26.9.2006, 11:41
если бы я еще знала как их использовать. в интернете ничего не найти.
нашла вот что:
Код

use Logfile::Rotate;
$logfile = new Logfile::Rotate(
                File   => "/var/adm/log/syslog",
                Count  => 5,
                Gzip   => "/usr/local/bin/gzip",
                Signal => 
                   sub {
                        open PID, "/etc/syslog.pid" or
                           die "Unable to open pid file:$!\n";
                        chomp($pid = <PID>);
                        close PID;
                        # should check validity first
                        kill 'HUP', $pid; 
                        }
            );

Код

$logfile->rotate(  );
undef $logfile;

только опять же надо вызывать вручную эту функцию rotate, только как узнать что день прошел?
вообщем, не понятно.

Автор: Valeria 26.9.2006, 12:58
спасибо, не буду мучиться. уже сделала с датой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)