Назад | Перейти на главную страницу

Используйте Logrotate для усечения файлов журнала после каждой записи или удаления последних n записей

Я создал файл конфигурации logrotate:

touch /etc/logrotate.d/.test

с конфигурациями:

/home/myUser/test*.log{
    size 0
    hourly
    rotate 0    
    nocreate
    nocompress
    missingok
    nocopytruncate
    ifempty
}

Я хочу иметь возможность очищать файлы после каждой записи (файл журнала блокировки) или в некоторых файлах журнала, чтобы очистить последние n записей. На самом деле, я хочу продолжать:

truncate -s 0 /home/myUser/test*.log

Как есть, nocopytruncate удалить файлы журнала. Если я положу copytruncate он создает второй журнал для каждого журнала «test * .log.1», игнорируя rotate 0. Если я выполню приведенные ниже команды, ничего не произойдет, игнорируя size 0.

echo "hello" >> ~/test1.log
cat ~/test1.log
  //output: hello

Похоже, что это не работает при использовании size. Чтобы это сработало, мне нужно исключить:

logrotate -f .test

Я делаю что-то неправильно?

Можно ли сделать это с помощью logrotate и каким-то образом скрыть файл конфигурации (как есть)?

Что касается второй части для очистки последних n записей, я понятия не имею, как это сделать с помощью logrotate.

Вместо использования logrotate.

Я бы сделал что-то вроде этого:

ln -s /dev/null /home/myUser/test.log

Это приведет к тому, что все данные журнала перейдут на нулевое устройство.

Но ведение журнала полезно, и обычно вы не должны просто выбрасывать его. Большинство приложений позволяют изменять объем и место входа в систему. Я бы использовал эти методы, прежде чем просто выбросить их.