SF patch #725904, Minor changes to logging from module author (Vinay Sajip)

- upgrade to version 0.4.8
This commit is contained in:
Neal Norwitz 2003-04-23 03:49:43 +00:00
parent 11b2306960
commit f297bd1937
2 changed files with 31 additions and 16 deletions

View file

@ -35,21 +35,14 @@ except ImportError:
thread = None thread = None
__author__ = "Vinay Sajip <vinay_sajip@red-dove.com>" __author__ = "Vinay Sajip <vinay_sajip@red-dove.com>"
__status__ = "alpha" __status__ = "beta"
__version__ = "0.4.8" __version__ = "0.4.8"
__date__ = "16 February 2003" __date__ = "22 April 2003"
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Miscellaneous module data # Miscellaneous module data
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
#
# _verinfo is used for when behaviour needs to be adjusted to the version
# of Python
#
_verinfo = getattr(sys, "version_info", None)
# #
#_srcfile is used when walking the stack to check when we've got the first #_srcfile is used when walking the stack to check when we've got the first
# caller stack frame. # caller stack frame.

View file

@ -26,7 +26,7 @@ Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved.
To use, simply 'import logging' and log away! To use, simply 'import logging' and log away!
""" """
import sys, logging, socket, types, os, string, cPickle, struct import sys, logging, socket, types, os, string, cPickle, struct, time
from SocketServer import ThreadingTCPServer, StreamRequestHandler from SocketServer import ThreadingTCPServer, StreamRequestHandler
@ -145,8 +145,7 @@ class SocketHandler(logging.Handler):
This function allows for partial sends which can happen when the This function allows for partial sends which can happen when the
network is busy. network is busy.
""" """
v = logging._verinfo if hasattr(self.sock, "sendall"):
if v and (v[0] >= 2) and (v[1] >= 2):
self.sock.sendall(s) self.sock.sendall(s)
else: else:
sentsofar = 0 sentsofar = 0
@ -448,6 +447,21 @@ class SMTPHandler(logging.Handler):
""" """
return self.subject return self.subject
weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
monthname = [None,
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
def date_time(self):
"""Return the current date and time formatted for a MIME header."""
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(time.time())
s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
self.weekdayname[wd],
day, self.monthname[month], year,
hh, mm, ss)
return s
def emit(self, record): def emit(self, record):
""" """
Emit a record. Emit a record.
@ -461,11 +475,11 @@ class SMTPHandler(logging.Handler):
port = smtplib.SMTP_PORT port = smtplib.SMTP_PORT
smtp = smtplib.SMTP(self.mailhost, port) smtp = smtplib.SMTP(self.mailhost, port)
msg = self.format(record) msg = self.format(record)
msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" % ( msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\nDate: %s\r\n\r\n%s" % (
self.fromaddr, self.fromaddr,
string.join(self.toaddrs, ","), string.join(self.toaddrs, ","),
self.getSubject(record), msg self.getSubject(record),
) self.date_time(), msg)
smtp.sendmail(self.fromaddr, self.toaddrs, msg) smtp.sendmail(self.fromaddr, self.toaddrs, msg)
smtp.quit() smtp.quit()
except: except:
@ -587,6 +601,14 @@ class HTTPHandler(logging.Handler):
self.url = url self.url = url
self.method = method self.method = method
def mapLogRecord(self, record):
"""
Default implementation of mapping the log record into a dict
that is send as the CGI data. Overwrite in your class.
Contributed by Franz Glasner.
"""
return record.__dict__
def emit(self, record): def emit(self, record):
""" """
Emit a record. Emit a record.
@ -597,7 +619,7 @@ class HTTPHandler(logging.Handler):
import httplib, urllib import httplib, urllib
h = httplib.HTTP(self.host) h = httplib.HTTP(self.host)
url = self.url url = self.url
data = urllib.urlencode(record.__dict__) data = urllib.urlencode(self.mapLogRecord(record))
if self.method == "GET": if self.method == "GET":
if (string.find(url, '?') >= 0): if (string.find(url, '?') >= 0):
sep = '&' sep = '&'