Способ ротации журналов из Perl
Таблица 9.2. Способ ротации журналов из Perl
Процесс | Perl |
Переименуйте старые журналы, присвоив им следующий номер. | renamed или &File: :Copy: :move() если переносить файлы с одной файловой системы на другую. |
Если необходимо, сообщите процессу, создающему файл журнала, о необходимости закрыть текущий файл и приостановить запись до тех пор, пока она не будет разрешена. | kill () для программ, принимающих сигналы, system () или (обратные кавычки), если необходимо вызвать для этого другую программу. |
Скопируйте или переместите файлы журналов, которые сейчас использовались, в другой файл. | &File: : Сору для копирования, rename( ), чтобы переименовать (или &File: :Copy: :move() при перемещении с одной файловой системы на другую). |
Если необходимо, урежьте текущий файл журнала. | truncate () или open (FILE, "> filename"). |
Если необходимо, пошлите сигнал процессу о необходимости приостановить запись в журнал. | Шаг 2 из этой таблицы. |
При желании сожмите или обработайте скопированный файл. | system( ) или обратные кавычки для запуска программы сжатия или другого программного кода, выполняющего обработку. |
Удалите самые старые копии файлов. | stat( ), чтобы выяснить размер файла и даты, unlink( ) для удаления файлов. |
На эту тему существует много вариаций. Все, кому не лень, писали собственные сценарии для ротации журналов. Так что не удивительно, что такой модуль существует. Рассмотрим модуль Logf lie: .Rotate Пола Гэмпа (Paul Gampe).
Logfile: : Rotate использует объектно-ориентированный подход для создания нового экземпляра объекта для журнала и для выполнения методов этого экземпляра. Сначала мы создаем новый экземпляр с заданными параметрами (табл. 9.3).