Code: Alles auswählen
def PrepLogger():
import logging.handlers
global log
global f1
global _loglevel
#_loglevel=logging.DEBUG
logging.basicConfig(format='%(funcName)-12s %(lineno)-3s %(levelname)-6s %(asctime)-9s: %(message)s', \
level=_loglevel, datefmt="%H:%M:%S")
log=logging.getLogger("test")
if _logfile=='':
f1=logging.handlers.RotatingFileHandler(_logfile)
else:
f1=logging.handlers.RotatingFileHandler(_logfile)
f1.setFormatter(logging.Formatter('%(funcName)-12s %(lineno)-3s %(levelname)-6s %(asctime)-9s: %(message)s',"%H:%M:%S"))
f1.setLevel(_loglevel)
log.addHandler(f1)
log.critical('logging-Objekt erfolgreich erstellt.')
Später wird dann die Cmdline analysiert - hier gibt's natürlich die Möglichkeit mit '-v' das Loglevel zu senken.
Hier der Code dazu:
Code: Alles auswählen
.....
elif opt=='-v':
# alten Loglevel speichern
xx=log.getEffectiveLevel()
if log.getEffectiveLevel()>=10:
log.setLevel(log.getEffectiveLevel()-10)
log.debug('loglevel alt=%i logLevel neu=%i', xx, log.getEffectiveLevel())
.....
Lasse ich das Skript In der Eclipse IDE oder über das Terminal laufen, dann tauchen am Bildschirm jede Menge logging-Meldungen auf (so wie gewünscht), die Datei mit den Log-Informationen wird aber nur sehr spärlich gefüllt - nämlich mit Meldungen Level critical oder error.
Faktisch sind anscheinend die Level für Datei und Bidlschirmausgabe unterschiedlich (respketive wird für die Datei nicht übernommen)
Was mache ich falsch?