| Раздел 8. HTTP-сервер Apache и вспомогательные программы
Пункт 77. Страница руководства: rotatelogs rotatelogs — это простая программа для использования в сочетании с функцией передачи файлов журнала Apache. Он поддерживает ротацию на основе временного интервала или максимального размера журнала.
Синопсис
rotatelogs
[ -l ]
[ -L linkname ]
[ -p program ]
[ -f ]
[ -t ]
[ -v ]
[ -e ]
[ -c ]
[ -n number-of-files ]
logfile
rotationtime|filesize(B|K|M|G)
[ offset ]
Параметры
-
-l
- Вызывает использование местного времени, а не GMT в качестве основы для интервала или для
strftime(3) форматирования с чередованием на основе размера.
-
-L имя ссылки
- Вызывает создание жесткой ссылки из текущего файла журнала на указанное имя ссылки. Это можно использовать для непрерывного просмотра лога при поворотах с помощью такой команды, как
tail -F linkname .
-
-p программа
- Если указано,
rotatelogs будет выполнять указанную программу каждый раз, когда открывается новый файл журнала. Имя вновь открытого файла передается программе в качестве первого аргумента. При выполнении после ротации старый файл журнала передается в качестве второго аргумента. rotatelogs не ожидает завершения указанной программы, прежде чем продолжить работу, и не регистрирует какой-либо код ошибки, возвращаемый при завершении. Порожденная программа использует те же stdin, stdout и stderr, что и сама rotatelogs, а также наследует среду.
-
-f
- Заставляет файл журнала открываться немедленно, как только он
rotatelogs запускается, вместо того, чтобы ждать, пока будет прочитана первая запись в файле журнала (для незанятых сайтов может быть значительная задержка между запуском сервера и обработкой первого запроса). , что означает, что связанный файл журнала не «существует» до тех пор, что вызывает проблемы с некоторыми инструментами автоматического ведения журнала)
-
-t
- Заставляет файл журнала усекаться, а не вращаться. Это полезно, когда журнал обрабатывается в реальном времени такой командой, как tail, и нет необходимости в архивных данных. К имени файла не будет добавляться суффикс, однако строки формата, содержащие символы «%», будут учитываться.
-
-v
- Создание подробного вывода на STDERR. Выходные данные содержат результат разбора конфигурации и все действия по открытию и закрытию файла.
-
-e
- Эхо регистрируется на стандартный вывод. Полезно, когда журналы необходимо обрабатывать в режиме реального времени другим инструментом в цепочке.
-
-c
- Создайте файл журнала для каждого интервала, даже если он пустой.
-
-n number-of-files
- Используйте циклический список имен файлов без меток времени. С параметром -n 3 последовательностью открываемых файлов журнала будет "logfile", "logfile.1", "logfile.2", а затем перезапись "logfile". Доступно в версии 2.4.5 и выше.
-
logfile
Путь плюс базовое имя файла журнала. Если файл журнала
содержит какие-либо символы '%', он рассматривается как строка формата для
strftime(3) . В противном случае автоматически добавляется суффикс
.nnnnnnnnnn , обозначающий время в секундах (если не используется параметр -t). Оба формата вычисляют время начала от начала текущего периода. Например, если указано время вращения 86400, strftime(3) все поля часа, минуты и секунды, созданные из формата, будут равны нулю, ссылаясь на начало текущего 24-часового периода (полночь).
При использовании strftime(3) форматирования имени файла убедитесь, что формат файла журнала имеет достаточную степень детализации, чтобы создавать разные имена файлов при каждой ротации журналов. В противном случае ротация перезапишет тот же файл, а не запустит новый. Например, если файл журнала был
/var/log/errorlog.%Y-%m-%d с ротацией журнала на 5 мегабайт, но 5 мегабайт было достигнуто дважды в один и тот же день, будет создан файл журнала с одним и тем же именем, и ротация журнала продолжит запись в один и тот же файл.
-
rotationtime
- Время между ротациями файла журнала в секундах. Вращение происходит в начале этого интервала. Например, если время ротации равно 3600, файл журнала будет ротироваться в начале каждого часа; если время ротации равно 86400, файл журнала будет ротироваться каждую ночь в полночь. (Если в течение интервала данные не регистрируются, файл не создается.)
-
filesize(B|K|M|G)
- За максимальным размером файла следует ровно одна из букв
B (байт), K (КБ), M (МБ) или G (ГБ).
Когда время и размер указаны, размер должен быть указан после времени. Ротация будет происходить всякий раз, когда будут достигнуты ограничения по времени или размеру.
-
offset
- Количество минут, смещенное от UTC. Если опущено, предполагается ноль и используется UTC.
-300 Например, чтобы использовать местное время в зоне UTC -5 часов, укажите для этого аргумента значение . В большинстве случаев -l следует использовать вместо указания смещения.
Примеры
CustomLog "|bin/rotatelogs /var/log/logfile 86400" common
Это создает файлы /var/log/logfile.nnnn, где nnnn — это системное время, в которое номинально запускается журнал (это время всегда будет кратно времени ротации, поэтому вы можете синхронизировать cron-скрипты с ним). В конце каждого времени ротации (здесь через 24 часа) запускается новый журнал.
CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common
Это создает файлы /var/log/logfile.yyyy.mm.dd, где yyyy — год, mm — месяц, а dd — день месяца. Ведение журнала будет переключаться на новый файл каждый день в полночь по местному времени.
CustomLog "|bin/rotatelogs /var/log/logfile 5M" common
Эта конфигурация будет чередовать файл журнала всякий раз, когда он достигает размера 5 мегабайт.
ErrorLog "|bin/rotatelogs /var/log/errorlog.%Y-%m-%d-%H_%M_%S 5M"
Эта конфигурация будет чередовать файл журнала ошибок всякий раз, когда он достигает размера 5 мегабайт, а суффикс имени файла журнала будет создаваться в форме
errorlog.YYYY-mm-dd-HH_MM_SS .
CustomLog "|bin/rotatelogs -t /var/log/logfile 86400" common
Это создает файл /var/log/logfile, усекая файл при запуске, а затем усекая файл один раз в день. В этом сценарии ожидается, что отдельный процесс (например, tail) будет обрабатывать файл в режиме реального времени.
Портативность
Следующие подстановки строк в формате файла журнала должны поддерживаться всеми strftime(3) реализациями, см. strftime(3) справочную страницу для расширений для конкретных библиотек.
%A | полное название дня недели (локализованное) |
%a | 3-символьное название дня недели (локализованное) |
%B | полное название месяца (локализованное) |
%b | 3-символьное название месяца (локализованное) |
%c | дата и время (локализовано) |
%d | 2-значный день месяца |
%H | 2-значный час (24-часовые часы) |
%I | 2-значный час (12-часовые часы) |
%j | 3-значный день года |
%M | 2-значная минута |
%m | 2-значный месяц |
%p | am/pm в 12-часовом формате (локализовано) |
%S | 2-значная секунда |
%U | 2-значная неделя года (воскресенье первый день недели) |
%W | Двузначная неделя года (понедельник, первый день недели) |
%w | 1-значный день недели (воскресенье первый день недели) |
%X | время (локализованное) |
%x | дата (локализовано) |
%Y | 4-значный год |
%y | 2-значный год |
%Z | название часового пояса |
%% | литерал `%' |
|
|