сначала надо проверить допустимость kill
Вот небольшой пример программы, в которой используются эти параметры:
use Logfile: .'Rotate;
Slogfile = new Logfile:;Rotate(
File => "/var/adm/log/syslog", Count => 5,
Gzip => "/usr/local/bin/gzip", Signal => sub (
open PID, "/etc/syslog.pid" or
die "Невозможно открыть pid-фа/.л :$'\n"; chomp($pid = <PID>); close PID;
# сначала надо проверить допустимость kill 'HUP', $pid; } ):
В результате выполнения этого фрагмента программы указанный журнал будет заблокирован и будет подготовлен модуль для ротации данного журнала. После того как этот объект создан, сама ротация журнала не представляет никакого труда:
$logfile->rotate(); undef Slogfile;
Строка undef нужна для того, чтобы убедиться, что файл журнала будет разблокирован после ротации (он заблокирован до тех пор, пока существует объект журнала).
Как говорится в документации, если с модулем работает привилегированный пользователь (например, пользователь root), необходимо кое-что учитывать. Во-первых, Logf lie. : Rotate прибегает к системному вызову для запуска программы gzip, что является потенциальной дырой в безопасности. Во-вторых, подпрограмма Signal должна быть реализована «оборонительным» способом. В предыдущем примере мы не проверяли, что идентификатор процесса, полученный из /etc/sys log.pid, действительно является идентификатором процесса для syslog. Лучше было бы использовать таблицу процессов, о чем мы говорили в главе 4 «Действия пользователей», перед тем как посылать сигнал через kill(). Более подробно советы по «защищенному» программированию приведены в главе 1 «Введение».
Кольцевой буфер
Мы только что рассмотрели традиционный способ ротации журналов для контроля за пространством, занимаемым постоянно растущими журналами. Позвольте представить вам более необычный подход, который вы можете добавить в свою копилку.
Вот обычный сценарий: выполняется отладка сервера, который выводит целый поток данных в журнал. Нас интересует только малая часть всех этих данных, вероятно, только те строки, которые выводятся сервером после выполнения определенных тестов на определенном клиенте. Если сохранять в журнале весь вывод, как обычно, это быстро заполнит жесткий диск. Ротация журналов с нужной частотой при таком количестве выводимых данных замедлит работу сервера. Что же делать?
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий