5

I want to set up daily logrotate for my Tomcat server' catalina.out log file but it's not working - I haven't seen the rotated log files created.
To troubleshoot, I ran logrotate -d /etc/logrotate.conf and got the following:

rotating pattern: /usr/local/tomcat/logs/catalina.out 5242880 bytes (7 rotations) empty log files are rotated, old logs are removed considering log /usr/local/tomcat/logs/catalina.out log needs rotating rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is 7 dateext suffix '-20151223' glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' glob finding old rotated logs failed copying /usr/local/tomcat/logs/catalina.out to /usr/local/tomcat/logs/catalina.out-20151223 truncating /usr/local/tomcat/logs/catalina.out compressing log with: /bin/gzip 

It seems like everything is working without any error. However, there is no results:

[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata* -rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log -rw-r--r-- 1 root root 109M Dec 23 17:21 /usr/local/tomcat/logs/catalina.out 

My /etc/logrotate.conf:

daily rotate 7 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d 

My /etc/logrotate.d/tomcat:

/usr/local/tomcat/logs/catalina.out { copytruncate daily rotate 7 compress missingok size 5M } 

What is wrong?

Updates:

Interestingly, running logrotate -f /etc/logrotate.conf creates the rotation gzip files!

[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata* -rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log -rw-r--r-- 1 root root 1.1M Dec 23 17:26 /usr/local/tomcat/logs/catalina.out-20151223.gz -rw-r--r-- 1 root root 109K Dec 23 17:27 /usr/local/tomcat/logs/catalina.out 

However, how do I know whether the daily cron job will work?

2
  • 2
    If you want to see the effect of your conf file, try running logrotate with the -v flag, as from the man page the -d flag says: "In debug mode, no changes will be made to the logs or to the logrotate state file." Commented Dec 23, 2015 at 9:42
  • 1
    Why don't you post this as an answer? As far as I can see, this is actually the source of the problem. Commented Dec 23, 2015 at 11:20

3 Answers 3

8

You are running logrotate -d /etc/logrotate.conf with -d argument.

The -d argument is debug mode, you can say kind of "dry-run". It will only give you info if the logrotate will work but will not rotate the logs.

The logrotate -f worked since the -f argument specifies logrotate to force the logrotate.

Quoting from the manual of logrotate:

  • -d, --debug

    Turns on debug mode and implies -v. In debug mode, no changes will be made to the logs or to the logrotate state file.

  • -f, --force Tells logrotate to force the rotation, even if it doesn't think this is necessary. Sometimes this is useful after adding new
    entries to a logrotate config file, or if old log files have been
    removed by hand, as the new files will be created, and logging
    will continue correctly.

If the logrotate -d /etc/logrotate.conf gave you output that the log will be rotate and compressed then it will surely rotate it when logrotate will go through your configuration file.

0

There is another question that links to this one as a claimed duplicate, but actually has a very different answer.

The answers to this question will only work if Tomcat is run as user "root", which is poor security practice. If Tomcat runs, according to best practices, as user tomcat:tomcat, the catalina.out file will also be owned by tomcat:tomcat. In that case, logrotate will not rotate catalina.out.

To fix that, you have to specify the user and group name in the logrotate configuration. So in that case, your /etc/logrotate.d/tomcat should be modified to look like this:

/usr/local/tomcat/logs/catalina.out { su tomcat tomcat copytruncate daily rotate 7 compress missingok size 5M } 
1
-1

In /etc/logrotate.d/tomcat try notifempty

2
  • 4
    How would that be relevant to the scenario described in the question? Commented Dec 23, 2015 at 11:21
  • The notifempty parameter says Do not rotate the log if it is empty -- but as you can see, the OP's log files are not empty. Commented Dec 23, 2015 at 13:21

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.