Here is the logrotate
/home/results/results/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
notifempty
dateext
create 644 results results
}
I'm pretty sure copytruncate is the problem. As documented in the manpage for logrotate for that option:
"Note that there is a very small time slice between copying the file and truncating it, so some logging data might be lost."
The amount of data lost will depend on how rapidly data is being written to the file. You'll want to switch away from that option, and the postrotate option may be the best way to go if you want to keep using logrotate. However, your app would need to be modified to be able to respond to some kind of signal so that it can re-open the log file. If modifying your application in that way isn't feasible, then you'll want to consider one of the other solutions suggested earlier in this thread. I personally recommend against using the syslog protocol due to limitations around handling embedded newlines in your log messages, but if you can avoid or escape the newlines, it should be fine.
-Jeremy