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имя_связи -
Создает жёсткую ссылку от текущего файла логов к указанному имени ссылки. Это можно использовать для непрерывного наблюдения за логами при ротации, используя команду, подобную
tail -F linkname.Если имя_связи не является абсолютным путем, оно относительно рабочей директории
rotatelogs, которая является рабочей директориейServerRoot, когдаrotatelogsзапускается сервером. -
-pпрограмма - Если указано,
rotatelogsвыполнит указанную программу каждый раз при открытии нового файла логов. Имя файла вновь открытого файла передаётся как первый аргумент программе. Если выполняется после ротации, старый файл логов передаётся как второй аргумент.rotatelogsне ожидает завершения указанной программы перед продолжением работы и не записывает код ошибки, возвращённый при завершении. Запущенная программа использует тот же stdin, stdout и stderr, что и rotatelogs, а также наследует среду. -f- Открывает файл логов сразу же после запуска
rotatelogs, вместо ожидания первой записи в файл логов (для неактивных сайтов может быть существенная задержка между запуском сервера и обработкой первого запроса, что означает, что соответствующий файл логов не «существует» до этого момента, что создаёт проблемы для некоторых автоматизированных инструментов ведения журнала). -D- Создаёт родительские директории пути, в который будет помещён файл логов, если они ещё не существуют. Это позволяет использовать форматирование
strftime(3)в пути, а не только в имени файла. -t- Приводит к обрезке файла логов вместо ротации. Это полезно, когда лог обрабатывается в реальном времени командой, подобной tail, и нет необходимости в архивированных данных. Однако суффикс имени файла не будет добавлен, но строки формата, содержащие символы '%', будут учтены.
-v- Выводит подробный вывод в STDERR. Вывод содержит результат разбора конфигурации и все действия по открытию и закрытию файлов.
-e- Выводит логи в stdout. Полезно, когда лог необходимо дополнительно обработать в реальном времени другим инструментом в цепочке.
-c- Создаёт файл логов для каждого интервала, даже если он пустой.
-n number-of-files- Использует циклический список имён файлов без временных меток. При -n 3, последовательность открытых файлов логов будет "logfile", "logfile.1", "logfile.2", затем перезапишется "logfile". Доступно в версии 2.4.5 и более поздних.
logfile-
Путь и имя файла логов. Если logfile содержит символы '%', он обрабатывается как строка формата для
strftime(3). В противном случае автоматически добавляется суффикс .nnnnnnnnnn, представляющий время в секундах (если не используется опция -t). Оба формата вычисляют начальное время с начала текущего периода. Например, если задано время ротации 86400, поля часа, минуты и секунды, созданные из форматаstrftime(3), будут равны нулю, ссылаясь на начало текущего 24-часового периода (полночь).При использовании форматирования имени файла
strftime(3), убедитесь, что формат файла логов обладает достаточной точностью, чтобы генерировать разное имя файла каждый раз при ротации логов. В противном случае ротация перезапишет тот же файл вместо создания нового. Например, если logfile был/var/log/errorlog.%Y-%m-%dс ротацией логов каждые 5 мегабайт, но 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) будет обрабатывать файл в реальном времени.
Переносимость
Следующие подстановки строк формата файла логов должны поддерживаться всеми strftime(3) реализациями, см. страницу руководства strftime(3) для расширений, специфичных для библиотеки.
%A |
полное имя дня недели (локализованное) |
%a |
аббревиатура имени дня недели (3 буквы) (локализованное) |
%B |
полное имя месяца (локализованное) |
%b |
аббревиатура имени месяца (3 буквы) (локализованное) |
%c |
дата и время (локализованное) |
%d |
день месяца (2 цифры) |
%H |
час (24-часовой формат) |
%I |
час (12-часовой формат) |
%j |
день года (3 цифры) |
%M |
минута (2 цифры) |
%m |
месяц (2 цифры) |
%p |
am/pm (локализованное) |
%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