############################################################################## # # Copyright (c) 2001, 2002 Zope Corporation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL 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. # ############################################################################## """Tail Logger $Id: taillogger.py 26559 2004-07-15 21:22:32Z srichter $ """ from zope.server.interfaces.logger import IMessageLogger from zope.interface import implements class TailLogger(object): """Keep track of the last log messages""" implements(IMessageLogger) def __init__(self, logger, size=500): self.size = size self.logger = logger self.messages = [] def logMessage(self, message): 'See IMessageLogger' self.messages.append(strip_eol(message)) if len(self.messages) > self.size: del self.messages[0] self.logger.logMessage(message) def strip_eol(line): while line and line[-1] in '\r\n': line = line[:-1] return line