mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Added exception handling during handler initialization in fileConfig()
This commit is contained in:
parent
1cc37380b2
commit
02dd994adf
1 changed files with 27 additions and 24 deletions
|
@ -98,31 +98,34 @@ def fileConfig(fname, defaults=None):
|
||||||
handlers = {}
|
handlers = {}
|
||||||
fixups = [] #for inter-handler references
|
fixups = [] #for inter-handler references
|
||||||
for hand in hlist:
|
for hand in hlist:
|
||||||
sectname = "handler_%s" % hand
|
try:
|
||||||
klass = cp.get(sectname, "class")
|
sectname = "handler_%s" % hand
|
||||||
opts = cp.options(sectname)
|
klass = cp.get(sectname, "class")
|
||||||
if "formatter" in opts:
|
opts = cp.options(sectname)
|
||||||
fmt = cp.get(sectname, "formatter")
|
if "formatter" in opts:
|
||||||
else:
|
fmt = cp.get(sectname, "formatter")
|
||||||
fmt = ""
|
|
||||||
klass = eval(klass, vars(logging))
|
|
||||||
args = cp.get(sectname, "args")
|
|
||||||
args = eval(args, vars(logging))
|
|
||||||
h = apply(klass, args)
|
|
||||||
if "level" in opts:
|
|
||||||
level = cp.get(sectname, "level")
|
|
||||||
h.setLevel(logging._levelNames[level])
|
|
||||||
if len(fmt):
|
|
||||||
h.setFormatter(formatters[fmt])
|
|
||||||
#temporary hack for FileHandler and MemoryHandler.
|
|
||||||
if klass == logging.handlers.MemoryHandler:
|
|
||||||
if "target" in opts:
|
|
||||||
target = cp.get(sectname,"target")
|
|
||||||
else:
|
else:
|
||||||
target = ""
|
fmt = ""
|
||||||
if len(target): #the target handler may not be loaded yet, so keep for later...
|
klass = eval(klass, vars(logging))
|
||||||
fixups.append((h, target))
|
args = cp.get(sectname, "args")
|
||||||
handlers[hand] = h
|
args = eval(args, vars(logging))
|
||||||
|
h = apply(klass, args)
|
||||||
|
if "level" in opts:
|
||||||
|
level = cp.get(sectname, "level")
|
||||||
|
h.setLevel(logging._levelNames[level])
|
||||||
|
if len(fmt):
|
||||||
|
h.setFormatter(formatters[fmt])
|
||||||
|
#temporary hack for FileHandler and MemoryHandler.
|
||||||
|
if klass == logging.handlers.MemoryHandler:
|
||||||
|
if "target" in opts:
|
||||||
|
target = cp.get(sectname,"target")
|
||||||
|
else:
|
||||||
|
target = ""
|
||||||
|
if len(target): #the target handler may not be loaded yet, so keep for later...
|
||||||
|
fixups.append((h, target))
|
||||||
|
handlers[hand] = h
|
||||||
|
except: #if an error occurs when instantiating a handler, too bad
|
||||||
|
pass #this could happen e.g. because of lack of privileges
|
||||||
#now all handlers are loaded, fixup inter-handler references...
|
#now all handlers are loaded, fixup inter-handler references...
|
||||||
for fixup in fixups:
|
for fixup in fixups:
|
||||||
h = fixup[0]
|
h = fixup[0]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue