On Thu, 2007-02-08 at 12:14 +0000, Martin Evans wrote:
Are there any samples on how best to interact with logging?
My server needs to log quite a few items, as such the log file is growing quite quickly and I would like to be able to switch file names on a daily basis. I would also probably then wish to delete logs older than 14 days.
I'm not sure how safe it would be to just keep calling startLogging() with a different file name mid-session. I realise there has been some discussion about this area recently.
Twisted includes a class, twisted.python.logfile.LogFile, which implements rotation. It does not, however, do auto-deletion. So I did this on Twisted 2.5 (no idea if 2.4's any different), which saves x old logs. If you want to discriminate by age, I'd suggest subclassing logfile.DailyLogFile and using a similar approach. ------------- import os from twisted.python import logfile, threadable class RotatingCleaningLogFile(logfile.LogFile): """ Deletes old logs. If maxOldLogs<1, doesn't delete old logs.""" def __init__(self, name, directory, maxOldLogs=0, rotateLength=1000000, defaultMode=None): logfile.LogFile.__init__(self, name, directory, rotateLength, defaultMode) self.maxOldLogs = maxOldLogs def rotate(self): logfile.LogFile.rotate(self) if self.maxOldLogs > 0: logs = self.listLogs() for i in logs: if i > self.maxOldLogs: os.unlink('%s.%d' % (self.path, i)) threadable.synchronize(RotatingLogFile) ------------- Good luck! Steve