Spec-Zone.ru › Apache HTTP Server

rotatelogs — программа конвейерного журналирования для ротации журналов Apache

rotatelogs — простая программа для использования совместно с функцией Apache, позволяющей передавать файлы журналов через конвейер. Она поддерживает ротацию по временному интервалу или максимальному размеру журнала.

Краткое описание

rotatelogs [ -l ] [ -L linkname ] [ -p program ] [ -f ] [ -D ] [ -t ] [ -v ] [ -e ] [ -c ] [ -n number-of-files ] logfile rotationtime|filesize(B|K|M|G) [ offset ]

Параметры

-l
Использовать местное время, а не GMT, в качестве основы для интервала или форматирования strftime(3) при ротации по размеру.
-L linkname

Создавать жёсткую ссылку с текущего файла журнала на указанное имя ссылки. Это можно использовать для непрерывного просмотра журнала при ротации с помощью команды вроде tail -F linkname.

Если имя ссылки не является абсолютным путём, оно считается относительно рабочего каталога rotatelogs, которым является ServerRoot, когда сервер запускает rotatelogs.

-p program
Если задано, rotatelogs будет выполнять указанную программу при каждом открытии нового файла журнала. Имя вновь открытого файла передаётся программе в качестве первого аргумента. Если программа выполняется после ротации, старый файл журнала передаётся в качестве второго аргумента. rotatelogs не ожидает завершения указанной программы, прежде чем продолжить работу, и не регистрирует код ошибки, возвращённый при её завершении. Запущенная программа использует те же stdin, stdout и stderr, что и сама rotatelogs, а также наследует окружение.
-f
Открывать файл журнала сразу после запуска rotatelogs, не дожидаясь чтения первой записи журнала (на малонагруженных сайтах между запуском сервера и обработкой первого запроса может пройти значительное время, поэтому связанный файл журнала до этого момента «не существует», что создаёт проблемы для некоторых средств автоматизированного журналирования).
-D
Создавать родительские каталоги пути, в котором будет размещён файл журнала, если они ещё не существуют. Это позволяет использовать форматирование strftime(3) в пути, а не только в имени файла.
-t
Обрезать файл журнала вместо его ротации. Это полезно, когда журнал обрабатывается в реальном времени командой вроде tail и архивные данные не нужны. Суффикс к имени файла добавляться не будет, однако строки формата, содержащие символы «%», будут обрабатываться.
-T
Обрезать все файлы журнала, кроме начального, при их открытии. Это полезно, если строка формата содержит значение, которое циклически повторяется, например день месяца. Доступно начиная с версии 2.4.56.
-v
Выводить подробные сообщения в STDERR. Вывод содержит результат разбора конфигурации, а также сведения обо всех операциях открытия и закрытия файлов.
-e
Передавать журналы также в stdout. Полезно, когда журналы требуется дополнительно обрабатывать в реальном времени следующим инструментом в цепочке.
-c
Создавать файл журнала для каждого интервала, даже если он пуст.
-n number-of-files
Использовать циклический список имён файлов без временных меток. Этот параметр перезаписывает файлы журналов при запуске и во время ротации. При -n 3 последовательность открываемых файлов журналов будет такой: «logfile», «logfile.1», «logfile.2», а затем снова «logfile».
При первом открытии программой файла «logfile» он будет обрезан только в том случае, если также указан -t. При каждой последующей ротации целевой файл всегда будет предварительно обрезаться. При ротации по размеру без -t и наличии существующих файлов журналов этот параметр может привести к неожиданному поведению: например, начальные записи журнала будут записаны в «logfile.1», а записи в «logfile.1» не сохранятся, даже если файлы «logfile.n» с большими номерами ещё не использовались.
Доступно начиная с версии 2.4.5.
logfile

Путь и базовое имя файла журнала. Если logfile содержит символы «%», оно рассматривается как строка формата для strftime(3). В противном случае автоматически добавляется суффикс .nnnnnnnnnn, содержащий время в секундах (если не используется параметр -t). В обоих форматах начальное время вычисляется от начала текущего периода. Например, если задано время ротации 86400, поля часа, минуты и секунды, созданные с помощью формата strftime(3), будут равны нулю и будут указывать на начало текущего 24-часового периода (полночь).

При использовании форматирования имени файла strftime(3) убедитесь, что формат файла журнала обеспечивает достаточную точность, чтобы при каждой ротации создавалось новое имя файла. В противном случае ротация будет перезаписывать один и тот же файл, а не создавать новый. Например, если для logfile задано /var/log/errorlog.%Y-%m-%d с ротацией журнала каждые 5 мегабайт, но этот объём достигается дважды за один день, будет получено одно и то же имя файла журнала, и запись продолжится в тот же файл.

Если файл журнала не задан абсолютным путём, путь считается относительно рабочего каталога rotatelogs, которым является ServerRoot, когда сервер запускает rotatelogs.

rotationtime
Интервал между ротациями файлов журнала в секундах. Ротация происходит в начале этого интервала. Например, если время ротации равно 3600, файл журнала будет ротироваться в начале каждого часа; если время ротации равно 86400, файл журнала будет ротироваться каждую ночь в полночь. (Если в течение интервала данные не записываются, файл не будет создан.)
filesize(B|K|M|G)
Максимальный размер файла, за которым следует ровно одна из букв B (байты), K (килобайты), M (мегабайты) или G (гигабайты).

Если указаны и время, и размер, размер следует задавать после времени. Ротация будет выполняться при достижении любого из этих ограничений.

offset
Смещение относительно UTC в минутах. Если параметр не указан, предполагается нулевое смещение и используется UTC. Например, чтобы использовать местное время в часовом поясе UTC -5 часов, задайте для этого аргумента значение -300. В большинстве случаев вместо указания смещения следует использовать -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) будет обрабатывать файл в реальном времени.

CustomLog "|bin/rotatelogs -T /var/log/logfile.%d 86400" common

Если сервер запускается (или перезапускается) первого числа месяца, данные добавляются в /var/log/logfile.01. Когда второго числа месяца записывается запись журнала, /var/log/logfile.02 обрезается, и новые записи добавляются в начало. В этом примере сохраняются журналы примерно за один месяц без внешнего обслуживания.

Переносимость

Все реализации 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 неделя года, 2 цифры (неделя начинается с понедельника)
%w день недели, 1 цифра (неделя начинается с воскресенья)
%X время (локализованное)
%x дата (локализованная)
%Y год, 4 цифры
%y год, 2 цифры
%Z название часового пояса
%% символ «%»

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/programs/rotatelogs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API