Як обертати журнал на основі інтервалу, якщо журнал не перевищує певний розмір?


20

На головній сторінці logrotate:

Файли журналу розміру у розмірі меншого розміру
обертаються, коли вони збільшуються, ніж розміри байтів, але не раніше за визначений часовий інтервал (щоденний, тижневий, щомісячний чи щорічний). Параметр пов'язаного розміру схожий, за винятком того, що він взаємовиключний з параметрами інтервалу часу, і він призводить до повороту файлів журналів без урахування останнього часу обертання. Коли використовується мінімальний розмір, враховуються як розмір, так і часова марка файлу журналу.

розмір розмір
файлів журналів повертаються , коли вони ростуть більше , ніж байт розміру. Якщо за розміром слідує k, розмір передбачається в кілобайтах. Якщо використовується M, розмір знаходиться в мегабайтах, а якщо використовується G, розмір - в гігабайти. Тож розмір 100, розмір 100k, розмір 100M та розмір 100Gare всі дійсні.

Я встановив розмір як 5М, а інтервал, як щотижня, думаючи, що журнали будуть обертатися щотижня, і додаткові обертання відбудуться, якщо розмір журналу перевищить 5М. Але що трапляється, це те, що журнал не обертається, якщо він не перевищує 5 М , що, здається, саме те, що має робити.

Чи я трактую посібник неправильно? Як змусити щоденник обертатися щотижня І якщо він перевищує 5М?

Редагувати:

Я не впевнений, чи стосується наступної інформації, але лише для доповнення:

Я використовую rsyslog для основної реєстрації повідомлень, secure, cron, maillog, boot. Нижче наведено дату обертання та розмір файлу передостаннього журналів, де розмір та інтервал встановлюються, як описано вище:

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

Як видно, обертаються лише повідомлення.

EDIT2:

Я повинен був би перевірити man logrotate. Вони насправді оновили його за допомогою параметра maxsize . Це саме те, що я шукаю:

Файли журналу максимального розміру
обертаються, коли вони збільшуються, ніж розміри байтів ще до додатково визначеного часового інтервалу (щоденний, тижневий, щомісячний або щорічний). Параметр пов'язаного розміру схожий, за винятком того, що він взаємовиключний з параметрами інтервалу часу, і він призводить до повороту файлів журналів без урахування останнього часу обертання. При використанні максимального розміру враховуються як розмір, так і часова марка файлу журналу.

Відповіді:


24

Тут є відповіді на деякі запитання: щоденно і розмір логротати?

Як правило logrotate, вони працюватимуть лише один раз на день, тому обмеження розміру точно не будуть дотримані. logrotateФайл статусу (можливо /var/lib/logrotate.status) зберігає лише дати (а не раз), він не призначений для частішого використання, тому не можна частіше тривіально обертати файли ( Оновлення : версія 3.85 додає погодинну підтримку та зберігає повну мітку часу у файлі стану .)

Ви не кажете, що syslogdви використовуєте, rsyslog та syslog-ng підтримують обертання на основі розміру, так що ви повинні мати можливість обертати їх за розміром та отримувати logrotateобертання щотижня (хоча певна думка може знадобитися для іменування файлів, щоб переконатися, що одночасне обертання файлу випадково щось не видаляє).

Ще один варіант - використовувати трубопровідні журнали, як і Apache, адже Apache-2.4 rotatelogs підтримує саме цю функцію (попередні версії підтримували лише розмір або час незалежно). Ви не кажете, звідки беруться журнали, але, можливо, ви зможете увійти до труби чи fifo та використовувати rotatelogs, якщо це підтримується.

З logrotate<= v3.8.0 три підтримувані сценарії:

  1. розмір обертається за розміром, максимум один раз на день, незалежно від минулого періоду
  2. часовий період обертається безумовно за часовим періодом, незалежно від розміру
  3. minsize & timeperiod, якщо розмір журналу перевищує менший розмір, а потім обертати на часовий період. Поширене використання - "minsize 1", що означає, що 0-байтні журнали не обертаються, мінімізуючи безлад.

logrotate-3.8.1 додає:

  1. MAXSIZE & TimePeriod обертаються , коли або розмір перевищує MAXSIZE, або після минулого TimePeriod. logrotateу цьому випадку може знадобитися запускати більше ніж за замовчуванням раз на день.

logrotate-3.8.5 додає:

  1. погодинна підтримка та зберігає повну мітку часу у файлі стану. Для цього слід бігати logrotate(принаймні) щогодини.

Будь ласка, дивіться моє оновлення, дякую за посилання. Здається, потрібен якийсь сценарій? minsize здається не дуже корисним, мені цікаво, чому вони мають його замість максимізувати.
Переповнення питання

1
Так, тепер доступна опція максимізації. Справа закрита :)
Переповнення питань

помітив, що в документах, перш ніж я прочитав ваше оновлення ... відповідь зараз розширений. Дякую.
mr.spuratic

1
> файл статусу logrotate (можливо, /var/lib/logrotate.status) зберігає лише дати (а не разів). Ця заява може бути застарілою. Я щойно перевірив свій файл статусу logrotate, і він містив часові позначки з другою роздільною здатністю: "/var/log/kern.log" 2018-3-12-1: 8: 16
hyperair
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.