For how long has this been in production? Because your setting for syslog reads as "rotate the file when the size has reached 50M, and keep up to 12 rotations". It won't rotate weekly, and it won't rotate if the file hasn't yet reached the required size.
These settings have been in place for more than 6 months.
I considered the same situation the the size setting was an issue, and setup a test.
I created an entry called /etc/logrotate.d/testfrank to process a rotation on file /tmp/local0notices but with the same size and rotate settings otherwise:
and then I ran this short script, which creates 20 60M files in /tmp of the same name 'local0notices' and runs logrotate on them ...
for x in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; do
dd if=/dev/zero of=/tmp/local0notices bs=1024 count=60000
ls -lh /tmp/local0notices
/usr/sbin/logrotate -v /etc/logrotate.conf
ls -altr /tmp/local0notices*
done
the result of which is good, I see 12 files in /tmp ...
The test works fine.
What looks weird to me on the real files, besides there's only ever 4 versions when I am trying to maintain 12, is the size of the files. It looks suspicious like another configuration setting may be processing the files before they're reaching 50M, the 433045 should be 50M or more.
I'm also not sure about the file name ending with .0 My test script didn't create a .0 file? ...:
My suspicions where correct ... My issue was that there were two procedures effecting this files, logrotate and cron.weekly/sysklogd using syslogd-listfiles --weekly command. I was able to filter out my local0notices file from the sysklogd procedure so that only logrotate managed my logs (at least for this logfile). Thanks to those who took a stab at resolving. I appreciate your help.