I would agree that a single control point is more desirable than
coordination attempts between rsyslog, logrotate, and an external script.
I would also comment that in cases where we integrate rsyslog and
logrotate, we always have logrotate perform an rsyslog full stop and
start, not just a restart or HUP, although this may be in reaction to
rsyslog behavior that has since been fixed. We also do this full stop
and start in cases where an external script operates on files or
directories watched by rsyslog.
Regards,
On 5/26/20 12:54 PM, Joan Sala via rsyslog wrote:
Logrotate is rotating the file, but not signaling your Python script when
this happens. So yes, as you have noticed, the rotation will not work
correctly with this setup.
You have two options. First and preferred option I think: forget about
logrotate and make your Python script rotate the logs by itself. I see the
Python logging library already has support for this:
https://docs.python.org/3/library/logging.handlers.html#rotatingfilehandler
This simplifies things since you no longer have to synchronize two
processes (logrotate and your script).
The second option would be to use logrotate and:
- configure the postrotate script to send a HUP signal to rsyslog
- in rsyslog, configure the 'hup.signal' flag of omprog to forward the HUP
signal to your script
- in your Python script, handle the HUP signal by reopening the log file
Regards
Joan
On Tue, May 26, 2020, 05:58 Fourhundred Thecat via rsyslog <
[email protected]> wrote:
Hello,
in my /etc/rsyslog.conf, I am calling external script to handle
mail.* logging:
mail.* action(type="omprog" name="blacklist-postfix"
binary="/usr/local/sbin/postfix.py" template="long-iso")
This custom script processes logs, and writes to /var/log/mail/mail.log
Everything works well, except my logs are not being logrotated properly.
This is my logrotate config:
/var/log/mail/mail.log {
rotate 4
weekly
sharedscripts
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
I suspect, the problem is that "invoke-rc.d rsyslog rotate" does rotate
rsyslog, but not my external script.
What would be the proper way to handle this?
Do I have to restart rsyslog, so that my script is terminated and
started anew?
_______________________________________________
rsyslog mailing list
https://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.
_______________________________________________
rsyslog mailing list
https://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.
_______________________________________________
rsyslog mailing list
https://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.