[Twisted-Python] startLogging
    Steve Freitas 
    sflist at ihonk.com
       
    Thu Feb  8 11:19:39 MST 2007
    
    
  
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
    
    
More information about the Twisted-Python
mailing list