Hello, can someone please suggest how to create an logrotate for this scenario. Need to delete all log file which are created more than 30 days ago, and all the log file have date stamp on it.
I dont want to create a cron job for this task.
here is the example
-rw-r--r-- 1 tomcat tomcat 49203 May 18 22:22 access.2013-05-18.log
-rw-r--r-- 1 tomcat tomcat 42702 May 19 23:59 access.2013-05-19.log
-rw-r--r-- 1 tomcat tomcat 396889 May 20 23:21 access.2013-05-20.log
-rw-r--r-- 1 tomcat tomcat 380026 May 21 23:26 access.2013-05-21.log
-rw-r--r-- 1 tomcat tomcat 255419 May 22 23:37 access.2013-05-22.log
-rw-r--r-- 1 tomcat tomcat 412441 May 23 23:12 access.2013-05-23.log
-rw-r--r-- 1 tomcat tomcat 236075 May 24 23:54 access.2013-05-24.log
-rw-r--r-- 1 tomcat tomcat 55490 May 25 23:55 access.2013-05-25.log
-rw-r--r-- 1 tomcat tomcat 41054 May 26 23:50 access.2013-05-26.log
-rw-r--r-- 1 tomcat tomcat 258924 May 27 23:18 access.2013-05-27.log
-rw-r--r-- 1 tomcat tomcat 258924 May 27 23:18 access.log
Thanks,
Check out the 'find' command, This is a simple example:
** Log files
May 6 12:47 access.2013-05-06.log
May 7 12:47 access.2013-05-07.log
May 8 12:47 access.2013-05-08.log
May 9 12:47 access.2013-05-09.log
May 10 12:47 access.2013-05-10.log
May 11 12:47 access.2013-05-11.log
May 12 12:47 access.2013-05-12.log
May 13 12:47 access.2013-05-13.log
May 14 12:47 access.2013-05-14.log
May 15 12:47 access.2013-05-15.log
** Find/list log files >30 days old
$ find . -mtime +30 -name "access.*.log" -print
./access.2013-05-06.log
./access.2013-05-07.log
./access.2013-05-08.log
./access.2013-05-09.log
./access.2013-05-10.log
./access.2013-05-11.log
** Find/list/remove log files >30 days old
$ find . -mtime +30 -name "access.*.log" -exec rm {} \; -print
./access.2013-05-06.log
./access.2013-05-07.log
./access.2013-05-08.log
./access.2013-05-09.log
./access.2013-05-10.log
./access.2013-05-11.log
** Log files left
May 12 12:47 access.2013-05-12.log
May 13 12:47 access.2013-05-13.log
May 14 12:47 access.2013-05-14.log
May 15 12:47 access.2013-05-15.log
I haven't tested but create /etc/logrotate.d/access
Populate it with
var/log/access.log {
daily
rotate 30
create 0644 tomcat tomcat
}
And then restart rsyslogd. If your /etc/logrotate.conf is default then I think that should work. But of course test.