Es gab eine Warnung im offiziellen Dokument Einstellungen der Protokollierungsumgebung, aber ich war völlig süchtig danach und habe es als Artikel geschrieben. Ich werde es verlassen.
Zusätzlich zur Konfiguration durch Aufrufen von Methoden wie addHandler () wird das Python-Protokollierungsmodul basierend auf logging.config.fileConfig ()
konfiguriert, das basierend auf der Konfigurationsdatei im INI-Format konfiguriert wird, und Konfigurationsinformationen zum Diktiertyp. Es kann mit logging.config.dictConfig ()
konfiguriert werden.
import logging.config
logging.config.dictConfig({
'version': 1,
'handlers': {
'default': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'stream': 'ext://sys.stderr',
}
},
'root': {
'level': 'DEBUG',
'handlers': ['default'],
}
})
logger = logging.getLogger('example')
logger.info('Hello') #Ausgabe
Bei Verwendung der Python-Protokollierung lautet die Redewendung "logger = logging.getLogger (__ name __)" am Anfang des Moduls. Das zuvor erwähnte Protokollierungssetup unterbricht diesen Code jedoch.
import logging.config
logger = logging.getLogger('example')
logging.config.dictConfig({
'version': 1,
'handlers': {
'default': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'stream': 'ext://sys.stderr',
}
},
'root': {
'level': 'DEBUG',
'handlers': ['default'],
}
})
logger.info('Hello') #Nicht ausgegeben
Dies liegt daran, dass fileConfig und dictConfig ursprünglich dazu gedacht waren, die Protokollierung als Ganzes zu konfigurieren und den bereits generierten Protokollierer standardmäßig zu deaktivieren.
Die Option zum Anpassen dieses Verhaltens ist disable_existing_loggers, wobei True das Standardverhalten und False das Nicht-Deaktivieren bedeutet. Diese Option kann als Schlüsselwortargument für fileConfig oder als Element des Diktats angegeben werden, das für dictConfig übergeben werden soll.
import logging.config
logger = logging.getLogger('example')
logging.config.dictConfig({
'version': 1,
'handlers': {
'default': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'stream': 'ext://sys.stderr',
}
},
'root': {
'level': 'DEBUG',
'handlers': ['default'],
},
'disable_existing_loggers': False,
})
logger.info('Hello') #Ausgabe
dictConfig hat auch eine Option namens inkrementell, die nur die Handler und Filter hinzufügt, die mit dem vorhandenen Logger geliefert werden, ohne sie zu entfernen.
Recommended Posts