On Thu, 16 Jun 2016, Alec Swan wrote:

Hello,

I am using imfile to read multiple log files in a folder using wildcards
and addMetadata="on" setting. Everything works fine and log files are being
read correctly until logrotate happens. Once logrotate runs rsyslog stops
reading log files until restarted.

Is there a way to make logrotate configuration more rsyslog friendly?

/var/log/myapp/logs/*.log {
   daily
   missingok
   rotate 7
   compress
   notifempty
   copytruncate
}

The problem is the copytruncate

When you copytruncate you are guaranteeing that you are going to loose some logs, there is a race between when the copy completes and when everything in the file is thrown away by the truncate, anything written to the logfile during this time will be lost. Depending on how the app is writing the logs, the truncate may even happen in the middle of a log message.

What you should do is mv the log and then trigger whatever is writing the log to close the file and open a new file. Exactly how you do this depends on the app.

Restarting or huping rsyslog doesn't solve this problem, this is pure log loss due to race conditions from the log rotation.

current versions of rsyslog should not have a problem noticing that the file was truncated and needs to be re-read, as long as the file is smaller at the time that it goes to read it after the truncation.

But if the file get moved instead, rsyslog will continue reading the old file to the end, and then notice that the inode for the filename has changed (i.e. that the move happened), and close the old file and start reading the new one.

David Lang
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to