I have a directory with many log files, all of which I would like to rotate daily. For organizational purposes I would like to be able to move the rotated logs into a different directory (or subdirectory) named by date, keeping the last week of logs.
I can use logrotate to achieve most of this by roatating the files in-place or even move them to a single different directory using the olddir
directive but I'm having trouble finding a solution for making individual sub-directories per rotation. How can I achieve this?:
Logs to rotate: /var/log/example/*
Desired target directories (keeping a week):
/var/log/example/20121006/*
[ ... ]
/var/log/example/20121012/*
You should be able to call an external script in the
postrotate
directive:and have that script do the moving, e.g.:
However, it might be easier to just use the
dateext
directive. With that the rotated files will be appended with a timestamp (although not moved to a different directory).See
logrotate(8)
for details about both directives.You have
olddir
directive you can use in config file.From the documentation:
Reference: https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html