About rotatezlogs
Readme
rotatezlogs
By Ingeniweb.
About
This product provides two additional logger handlers to the standard ones (see the doc in zope.conf) that rotate the log files.
It is not always possible to rotate Zope logs using system wide services. This utility enables to rotate automatically Zope logs (with or without zipping) using the features of the "logging" standard module.
Don't look for new objects in the ZMI factory. All is configured in zope.conf (see Installation below.)
This is mainly useful for Windows : rotating logs from an external utility while Zope is up is not possible.
Note that the log rotation rules is based on the actual size of a log file, and not on time periods (cron like).
Requirements
Tested with Zope 2.8.6, Zope 2.9.3, Windows and Unix and may work (untested) with previous versions of Zope 2.8 and 2.9 series.
rotatezlogs does not require additional product.
Will not work with Zope 2.7.x. We should completely rework component.xml for this.
Installation
Inflate this product in the Products of your instance or some other place (see the products variable of $INSTANCE/etc/zope.conf).
Configure the rotating file logger handler
In any logger directive of zope.conf, change the handler as in this example for the <eventlog>.
%import Products.rotatezlogs
<eventlog>
# Usual options, see the doc in zope.conf
level info
<rotatelogfile>
# Required parameters
# -------------------
path $INSTANCE/log/event.log
# We'll get up to 6 Mb of logs
max-bytes 1MB
backup-count 5
# Optional parameters
# -------------------
# compression zip
# format ------\n%(asctime)s %(levelname)s %(name)s %(message)s
</rotatelogfile>
</eventlog>
This works for other logs too (access, trace).
When the size is about to be exceeded, the file is closed and a new file is silently opened for output. Rollover occurs whenever the current log file is nearly max-bytes in length; if max-bytes is zero, rollover never occurs. If backup-count is non-zero, the system will save old log files by appending the extensions ".1", ".2" etc., to the filename. For example, with a backup-count of 5 and a base file name of event.log, you would get event.log, event.log.1, event.log.2, up to event.log.5. The file being written to is always event.log. When this file is filled, it is closed and renamed to event.log.1, and if files event.log.1, event.log.2, etc. exist, then they are renamed to event.log.2, event.log.3 etc. respectively.
If you want compressed rotated log files, you can add the optional compression key parameter to the configuration. The value for compression can be:
- none : the default, no compression is processed
- zip : rotated files are zipped to xxx.log.1.zip etc.
- gzip : rotated files are gzipped to xxx.log.1.gz etc.
- bzip2 : rotated files are bzipped2 to xxx.log.1.bz2 etc.
Copyright and license
Copyright (c) 2006 Ingeniweb SAS
This software is subject to the provisions of the GNU General Public License, Version 2.0 (GPL). A copy of the GPL should accompany this distribution. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE
See the .../rotatezlogs/LICENSE file that comes with this product.
Testing
Please read the .../rotatezlogs/tests/README.txt
Download
Stay in tune with the latest releases of rotatezlogs...
CVS:
$ cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/ingeniweb co rotatezlogs
Releases: http://sourceforge.net/project/showfiles.php?group_id=74634
Download
Released versions
Released versions of rotatezlogs are available here. The current version is 1.0.
CVS version
The repository contains the up-to-date versions of our source code. In order to get the HEAD branch of rotatezlogs, use :
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ingeniweb co rotatezlogs
You can also browse the CVS with your browser.
Documentation
Readme
Please take time the read the Readme
F.A.Q
FAQ
What about rotating at pre-defined period rather than size based condition?
Perhaps a future feature but :
- The Python logging module doesn't provide such handler.
- As a consequence, this requires more work than this one.
- Consider sponsiring this feature if you really need it.
Why rotatezlogs doesn't support Zope 2.7.x?
- Because the inners of the logging configuration have changed in depth with Zope 2.8. Most of the bindings and configuration definitions are in the component.xml file, and it's not possible to write auto adaptative XML code as we do in Python with "try...except" or such constructs.
- Feel free to contribute and provide a component.xml that fits with Zope 2.7 configuration policy, as well as an auto adaptative scheme that supports Zope 2.8 and 2.9.
- Or consider sponsiring the Zope 2.7 support if you really need it, but can't do it yourself.
Links
History
rotatezlogs changes
CHANGES
1.0
- Unified handlers (simpler to document and configure)
- Added gzip and bzip2 compression modes.
1.0-RC1
- Added unit tests
- Enough testing, making a release candidate
- Added rotation + zipping option
1.0-Beta1
- Initial release
rotatezlogs ChangeLog is also available for detailed informations.
Contact
- You can report bugs using the bugtracker.
- To get Open Source support for this component, use support@ingeniweb.com.
- To get commercial support for this component, ask sales@ingeniweb.com.
- To host a Zope/Plone server or instance, take a look at IngeniHosting.
- For Zope, Plone or rotatezlogs training, ask sales@ingeniweb.com.

