summaryrefslogtreecommitdiff
path: root/Mailman/Logging/StampedLogger.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/Logging/StampedLogger.py')
-rw-r--r--Mailman/Logging/StampedLogger.py89
1 files changed, 0 insertions, 89 deletions
diff --git a/Mailman/Logging/StampedLogger.py b/Mailman/Logging/StampedLogger.py
deleted file mode 100644
index ca313c537..000000000
--- a/Mailman/Logging/StampedLogger.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-import os
-import time
-
-from Mailman.Logging.Logger import Logger
-
-
-
-class StampedLogger(Logger):
- """Record messages in log files, including date stamp and optional label.
-
- If manual_reprime is on (off by default), then timestamp prefix will
- included only on first .write() and on any write immediately following a
- call to the .reprime() method. This is useful for when StampedLogger is
- substituting for sys.stderr, where you'd like to see the grouping of
- multiple writes under a single timestamp (and there is often is one group,
- for uncaught exceptions where a script is bombing).
-
- In any case, the identifying prefix will only follow writes that start on
- a new line.
-
- Nofail (by default) says to fallback to sys.stderr if write fails to
- category file. A message is emitted, but the IOError is caught.
- Initialize with nofail=0 if you want to handle the error in your code,
- instead.
-
- """
- def __init__(self, category, label=None, manual_reprime=0, nofail=1,
- immediate=1):
- """If specified, optional label is included after timestamp.
- Other options are passed to the Logger class initializer.
- """
- self.__label = label
- self.__manual_reprime = manual_reprime
- self.__primed = 1
- self.__bol = 1
- Logger.__init__(self, category, nofail, immediate)
-
- def reprime(self):
- """Reset so timestamp will be included with next write."""
- self.__primed = 1
-
- def write(self, msg):
- if not self.__bol:
- prefix = ""
- else:
- if not self.__manual_reprime or self.__primed:
- stamp = time.strftime("%b %d %H:%M:%S %Y ",
- time.localtime(time.time()))
- self.__primed = 0
- else:
- stamp = ""
- if self.__label is None:
- label = "(%d)" % os.getpid()
- else:
- label = "%s(%d):" % (self.__label, os.getpid())
- prefix = stamp + label
- Logger.write(self, "%s %s" % (prefix, msg))
- if msg and msg[-1] == '\n':
- self.__bol = 1
- else:
- self.__bol = 0
-
- def writelines(self, lines):
- first = 1
- for l in lines:
- if first:
- self.write(l)
- first = 0
- else:
- if l and l[0] not in [' ', '\t', '\n']:
- Logger.write(self, ' ' + l)
- else:
- Logger.write(self, l)