Я создал файл конфигурации 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
Это приведет к тому, что все данные журнала перейдут на нулевое устройство.
Но ведение журнала полезно, и обычно вы не должны просто выбрасывать его. Большинство приложений позволяют изменять объем и место входа в систему. Я бы использовал эти методы, прежде чем просто выбросить их.