Ежедневник и размер?
Если конфигурация logrotate указана с параметрами "size" и "daily", какой из них имеет приоритет? Где это задокументировано? Мне бы хотелось, чтобы эти повороты происходили как логическая операция ИЛИ, т. Е. Если журналы имеют дневной возраст, они вращаются, ИЛИ, если они больше определенного размера, они также будут вращаться. Однако в настоящее время logrotate использует только директиву size и, по-видимому, игнорирует директиву daily. Logrotate настроен на запуск каждый час. ОС Linux, производные от Red Hat и Debian.
Также я указываю сначала "ежедневно", а затем "размер" в начале файла. Не уверен, что порядок имеет значение, но в любом случае, сначала нужно войти в файл конфигурации...
Спасибо!
4 ответа
Если используется директива size, logrotate будет игнорировать ежедневные, еженедельные, ежемесячные и годовые директивы. Это не ясно в документации, когда вы выполняете man logrotate
команда. Однако это может быть подтверждено на практике, и упоминается в некоторых произвольных сообщениях в блоге, таких как этот.
Существует директива minsize, которая, согласно man-странице logrotate, является единственной директивой размера, которую можно использовать вместе со временными. Тем не менее, это все еще не то, что вы хотите. Использование minsize с daily по сути говорит: вращайте журналы ежедневно, но только тогда, когда они имеют размер не менее #MB.
На сегодняшний день я не нашел способа с logrotate выполнить требуемое условие: вращаться каждый день, если размер не превышает #MB, в этом случае вращаться немедленно. Я не думаю, что это поддерживается с использованием только директив logrotate. Это может быть возможно сделать с некоторыми умными сценариями с помощью директив ловушек сценария, таких как prerotate, postrotate, firstaction и lastaction.
Обновление:
По состоянию на logrotate 3.8.1, maxsize
а также timeperiod
поддерживаются вместе, что было бы идеальным решением. См. Ответ на этот пост: Как вращать журнал на основе интервала, если журнал не превышает определенный размер?
Первый ответ @egg, согласно моему опыту с logrotate, не соответствует действительности!
Если ежедневные, ежемесячные,... идут первыми и после этой директивы размера, ежедневная, ежемесячная... будет игнорироваться и директива размера будет применяться к файлу журнала.
Точно так же, когда я впервые использую директиву size, а затем ежедневную, еженедельную, ежемесячную и ежегодную директивы, директива size будет игнорироваться.
На самом деле, моя справочная страница в Red Hat, похоже, довольно ясно показывает разницу между размерами и размерами:
миниатюрный размер
Log files are rotated when they grow bigger then size bytes, but not before the additionally specified time interval (daily, weekly, monthly, or yearly). The related size option is similar except that it is mutually exclusive with the time interval options, and it causes log files to be rotated with- out regard for the last rotation time. When minsize is used, both the size and timestamp of a log file are considered.
Если вы добавите Ежедневно, он будет вращаться каждый день, даже если выполнено условие Размер. Если вы также добавите условие размера, вы можете получить два поворота за один день, в зависимости от того, насколько многословна запись в журнал.
Если ежедневник идет первым в сценарии, то размер может не сработать.