Kaydet (Commit) 260ce432 authored tarafından Vinay Sajip's avatar Vinay Sajip

Propagate exceptions from shutdown() if raiseExceptions is not set.

Added 'extra' keyword argument handling to logging calls, as discussed on python-dev.
üst 1eb77a50
...@@ -1053,14 +1053,20 @@ class Logger(Filterer): ...@@ -1053,14 +1053,20 @@ class Logger(Filterer):
continue continue
return filename, f.f_lineno, co.co_name return filename, f.f_lineno, co.co_name
def makeRecord(self, name, level, fn, lno, msg, args, exc_info): def makeRecord(self, name, level, fn, lno, msg, args, exc_info, extra=None):
""" """
A factory method which can be overridden in subclasses to create A factory method which can be overridden in subclasses to create
specialized LogRecords. specialized LogRecords.
""" """
return LogRecord(name, level, fn, lno, msg, args, exc_info) rv = LogRecord(name, level, fn, lno, msg, args, exc_info)
if extra:
for key in extra:
if (key in ["message", "asctime"]) or (key in rv.__dict__):
raise KeyError("Attempt to overwrite %r in LogRecord" % key)
rv.__dict__[key] = extra[key]
return rv
def _log(self, level, msg, args, exc_info=None): def _log(self, level, msg, args, exc_info=None, extra=None):
""" """
Low-level logging routine which creates a LogRecord and then calls Low-level logging routine which creates a LogRecord and then calls
all the handlers of this logger to handle the record. all the handlers of this logger to handle the record.
...@@ -1072,7 +1078,7 @@ class Logger(Filterer): ...@@ -1072,7 +1078,7 @@ class Logger(Filterer):
if exc_info: if exc_info:
if type(exc_info) != types.TupleType: if type(exc_info) != types.TupleType:
exc_info = sys.exc_info() exc_info = sys.exc_info()
record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info) record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, extra)
self.handle(record) self.handle(record)
def handle(self, record): def handle(self, record):
...@@ -1324,12 +1330,14 @@ def shutdown(): ...@@ -1324,12 +1330,14 @@ def shutdown():
""" """
for h in _handlerList[:]: # was _handlers.keys(): for h in _handlerList[:]: # was _handlers.keys():
#errors might occur, for example, if files are locked #errors might occur, for example, if files are locked
#we just ignore them #we just ignore them if raiseExceptions is not set
try: try:
h.flush() h.flush()
h.close() h.close()
except: except:
pass if raiseExceptions:
raise
#else, swallow
#Let's try and shutdown automatically on application exit... #Let's try and shutdown automatically on application exit...
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment