Änderung einer logger-Config durch den Config-Parser
Verfasst: Montag 10. März 2008, 16:36
Hi alle zusammen!
Ich benutze Python5.2.5 mit Eclipse. Nun zu meinem Problem: Ich möchte in meinem Programm eine Logging-Config-File einlesen, abändern und danach an den Logger übergeben. Nun habe ich eine Lösung gefunden, die jedoch nicht sehr ellegant ist, da ich die abgeänderte Config-File erst noch einmal in einer Datei zwischenspeichere und dann dem Logger übergebe. Mein Code (der funktioniert):
def readConfigFile(cfgFile):
global cfg
cfg = ConfigParser.ConfigParser()
cfg.read(cfgFile)
#Aenderung der Configfile per set( section, option, value)
cfg.set('handler_file_unittest','args',(('log/unittest'+time.strftime('%Y%m%d%H%M%S')+'.log'),'aw'))
#Aufruf der Methode readConfigFile
readConfigFile("logging.conf")
#Erzeugen einer neuen Config-Datei; Speichern der geaenderten Config in diese Datei
new_config_updated = file('temp.conf', 'w')
cfg.write(new_config_updated)
new_config_updated.close()
#Laden der geanderten Config Datei in den Logger
loggingConfFile = 'temp.conf'
loggingSection = 'unittest'
logging.config.fileConfig(loggingConfFile)
log = logging.getLogger(loggingSection)
Hat jemand vielleicht ne Idee wie ich das Zwischenspeichern umgehen kann? Ich habe schon viel probiert, vor allem da man ab Version 2x ja dank der readfp funktion des Config-Parsers dem Logger ausdrücklich auch ein File-Object übergeben kann, doch ich bin noch auf keinen grünen Zweig gekommen. Danke schon mal im voraus,
Gruß Martin
Ich benutze Python5.2.5 mit Eclipse. Nun zu meinem Problem: Ich möchte in meinem Programm eine Logging-Config-File einlesen, abändern und danach an den Logger übergeben. Nun habe ich eine Lösung gefunden, die jedoch nicht sehr ellegant ist, da ich die abgeänderte Config-File erst noch einmal in einer Datei zwischenspeichere und dann dem Logger übergebe. Mein Code (der funktioniert):
def readConfigFile(cfgFile):
global cfg
cfg = ConfigParser.ConfigParser()
cfg.read(cfgFile)
#Aenderung der Configfile per set( section, option, value)
cfg.set('handler_file_unittest','args',(('log/unittest'+time.strftime('%Y%m%d%H%M%S')+'.log'),'aw'))
#Aufruf der Methode readConfigFile
readConfigFile("logging.conf")
#Erzeugen einer neuen Config-Datei; Speichern der geaenderten Config in diese Datei
new_config_updated = file('temp.conf', 'w')
cfg.write(new_config_updated)
new_config_updated.close()
#Laden der geanderten Config Datei in den Logger
loggingConfFile = 'temp.conf'
loggingSection = 'unittest'
logging.config.fileConfig(loggingConfFile)
log = logging.getLogger(loggingSection)
Hat jemand vielleicht ne Idee wie ich das Zwischenspeichern umgehen kann? Ich habe schon viel probiert, vor allem da man ab Version 2x ja dank der readfp funktion des Config-Parsers dem Logger ausdrücklich auch ein File-Object übergeben kann, doch ich bin noch auf keinen grünen Zweig gekommen. Danke schon mal im voraus,
Gruß Martin