логротати щодня і розмір?


40

Якщо конфігурація логротату вказана з параметрами "розмір" та "щоденно", який із них має перевагу? Де це документально зафіксовано? Я хотів би, щоб ці обертання відбувалися як булева операція АБО, тобто, якщо журнали стають щодня, вони обертаються, АБО якщо вони перевищують певний розмір, вони також будуть обертатися. Однак logrotate наразі використовує лише директиву "size" і, здається, ігнорує директиву "daily". Логротат налаштований на роботу щогодини. ОС - це похідні Linux, Red Hat та Debian.

Також я вказую спочатку "щоденний", потім "розмір" з початку файлу. Не впевнений, чи має значення порядок, але в будь-якому випадку, потрібно спочатку зайти у конфігураційний файл ...

Дякую!


2
Також дивіться serverfault.com/questions/474941/…
belacqua

> локальні визначення переосмислюють глобальні, а пізніші визначення> переосмислюють більш ранні з манстратипи логротату 3.8.7
Джон Боб Джо

Відповіді:


62

Якщо використовується директива щодо розміру , logrotate буде ігнорувати щоденні , щотижневі , щомісячні та річні директиви. Це не зрозуміло в документації при виконанні man logrotateкоманди. Однак це може бути підтверджено на практиці, і воно згадується в деяких довільних публікаціях блогу, таких як ця .

Існує директива під назвою minsize, яка, згідно зі сторінкою logrotate man, є єдиною директивою щодо розміру, яка може використовуватися разом із тимчасовими. Однак все одно це не те, що ти хочеш. Використання minsize with daily по суті говорить: обертати журнали щодня, але лише тоді, коли вони мають розмір принаймні #MB .

На сьогоднішній день я не знайшов способу з логротатом виконати необхідну вам умову: обертати щодня, якщо тільки розмір не перевищує # МБ, і в такому випадку обертайтеся негайно . Я не думаю, що це підтримується, використовуючи лише директиви logrotate. Можна було б зробити якісь - небудь розумними сценаріями з допомогою директив сценарію гачків , як prerotate , postrotate , firstaction і lastaction .

Оновлення :

На логротат 3.8.1 maxsizeі timeperiodпідтримуються разом, що було б ідеальним рішенням. Дивіться відповідь на цю публікацію: Як обертати журнал на основі інтервалу, якщо журнал не перевищує певний розмір?


4
Найкращим варіантом, мабуть, буде використання двох окремих команд cron, запуску для запуску щодня із конфігурацією за замовчуванням, і одна кожні х хвилин, яка займає конфігурацію лише з файлами, які ви переживаєте за переповнення, використовуючи директиву щодо розміру, а не щоденну.
SilverbackNet

8
Станом на логротат 3,81 maxsizeі timeperiodпідтримуються. На сервер defaultfault.com/questions/474941/…
belacqua

1
@belacqua Я використовую 3.8.7, а період часу відсутній у людини.
JorgeeFG

Правильна версія - це фактично 3.8.1, а не 3.81.
Том Міллер

2

Перша відповідь @egg - згідно з моїм досвідом роботи з логротатом, неправда!

Якщо щодня, щомісяця, ... прийдуть першими, а після цієї директиви щодо розміру , щодня, щомісяця, ... будуть ігноруватися, а директива щодо розміру застосовуватиметься до файлу журналу.

Аналогічно, коли я вперше використовую директиву про розмір, а потім щоденні, щотижневі, щомісячні та річні директиви, директива щодо розміру буде ігноруватися.


1

Якщо ви додаєте щодня, він обертається щодня, навіть якщо умова розміру дотримана. Якщо ви також додасте умову розміру, ви можете отримати два обертання за один день, залежно від того, наскільки багатослівний журнал.

Якщо Daily виходить першим у сценарії, то розмір може не вимкнутись.


скористайтеся багатослівним варіантом, щоб побачити, які правила використовуються. В моїх тестах я вважаю, що використовується лише останнє правило, оскільки більш конкретні правила можуть перекривати більш загальні правила.
Брам

Більше обертання в порядку, як це було б очікуваною поведінкою. (булева АБО) Однак моє питання полягає в тому, що ці обертання не відбуваються. Це здається помилкою (можливо, особливістю) обертання журналу, оскільки я не бачу, щоб порядок директив був важливим або задокументованим де-небудь.
котячі штани

чи можете ви навести приклад свого logrotate.conf та файлів, на які ви намагаєтеся націлити? Щодня не має жодного іншого стану, ніж прогресування часу. Розмір умовний.
Пол Хікокс

/tmp/output.log {щоденний розмір 1k поворот 5}
котячі штани

1
Цей файл обертається, коли розмір перевищує 1 к, але він не обертається щодня, як очікувалося та бажано.
котячі штани

1

Насправді, моя сторінка man на 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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.