Вопрос Лучшие способы управления системными журналами


Я хочу манипулировать журналами. Пока что для меня лучшим способом очистки системных журналов является:

truncate -s 0 /var/log/*log

Я ищу наилучшие способы:

1 - Делайте это периодически. Я уже пытался logrotate, но я не мог настроить его, чтобы сделать то, что я хочу, имея в виду сохранить только исходный файл журнала и периодически усекать его, не удаляя его.

- Обновлено:

В соответствии с северо-Bradley ответ Вот решение, похоже, используется lastaction/endscript в файл конфигурации logrotate. Таким образом, он отлично работает, используя следующие настройки:

/var/log/*log{
       rotate 0
       size 0 
       hourly
       nocreate
       maxage 0
       missingok
       nocompress
       ifempty
       copytruncate
       lastaction
             rm -rf /var/log/*log.1
       endscript
}

copytruncate опция копирует журналы в новые файлы журналов, игнорируя rotate 0 а также nocreate, затем обрезает исходные журналы. После того, как все файлы журналов были повернуты, rm в lastaction/endscript раздел удаляет все новые файлы журналов, созданные copytruncate, В конце мы очищаем только исходные файлы.

2 - Очистить последние 'n' записи

3 - Блокировать / Разблокировать новые записи, что-то вроде замораживания / размораживания. Для этого я думаю использовать ln -s /dev/null /var/log/*log, но я не знаю, могу ли я восстановить это без необходимости какого-либо скрипта. Или, может быть, может помочь техническая поддержка резервного копирования / восстановления.

Есть ли другой способ, который мог бы помочь мне сделать все вышеизложенное (2 и 3)?


1
2018-03-23 13:39


происхождения




ответы:


Logrotate специально разработан для решения таких задач, и он работает хорошо. Я предлагаю вам использовать его.

Теперь давайте посмотрим (и при необходимости - исправим) ваш файл logrotate, используя тонкие страницы руководства, предоставленные хорошими парнями из Ubuntu (ссылка).

Ваша версия:

# File: /etc/logrotate.d/.test
/var/log/*log{
   size 0 
   hourly
   nocreate
   copytruncate
   rotate 0
}

Я предлагаю вам использовать ниже:

# File: /etc/logrotate.d/.test
/var/log/*.log{
# the rotate option sets how many times the log files are rotated before being removed. Setting it to 0 means - delete right away (you'll only have the original)
   rotate 0
# the size option sets what size should a file reach before being rotated - I'm setting it to 10MB, but you can change it as it pleases you
   size 10M
# The size option will prevail this option. The daemon will run hourly, but won't rotate the log file until it reaches 10 MB
   hourly
# this option fits your requirement not to create new log files
   nocreate
# delete rotated log files older than 0 days
   maxage 0
# truncate the original file rather creating new one
   nocopytruncate
}

2
2018-03-23 14:44



Используя copytruncate  он создает новый файл *log.1 затем обрезает файл *log, игнорируя rotate 0 а также nocreate, С другой стороны, если вы положите nocopytruncate удаляет файл журнала. - ioaniatr
Правильно, исправил. - 13dimitar
Но все же я не хочу удалять файл (rm), чтобы оставить его пустым (truncate). - ioaniatr