Ich habe eine Funktion, die ich von Protokoll ausgeben möchte. Die Logdateien sind Teil der Programmausgabe als eine Aufzeichnung davon, wann die Funktion was gemacht hat (d. H. Nicht nur Debuggen oder Post-Mortem-Zeug), so dass ich sie an einem bestimmten Ort speichern möchte. Dieser Ort wird aus einer Konfigurationsdatei geladen, aber ich möchte Erfolg oder Misserfolg beim Lesen der Konfigurationsdatei protokollieren!Verzögern der Ausgabe zu einer Protokolldatei
So kann ich nicht das Logfile erstellen erst nach Config gelesen hatte, aber ich will nicht die Config bis lesen, nachdem ich den Prozess anmelden kann.
Gibt es eine Möglichkeit, eine Reihe von Protokollanweisungen zu verschieben, die erst später in die Datei geschrieben werden? Eine vereinfachte Version der Funktion ist unten: offensichtlich läuft es nicht, weil logfile
erst später verfügbar ist.
Es sieht aus wie basicConfig(..., delay=True)
die Antwort sein könnte, aber es klingt wie, dass nur eine Verzögerung für das erste Protokollierung Ereignis behandelt. Gibt es eine Antwort für mehr Logging-Ereignisse?
import logging
import json
def record(config):
logger = logging.getLogger(LOG)
logging.basicConfig(filename=logfile, level=logging.INFO)
logger.info('Start of continuous sampling')
# Load the config file
try:
config = json.load(open(config_file))
logfile = config['logfile']
logger.info('Config file found')
except IOError:
logger.critical('Config file not found')
sys.exit()
Bitte überprüfen Sie immer Ihre Eingabe, es ist nicht einfach zu folgen. Die "Verzögerung" ist wie ein Lazy Loading, es wird geschrieben, wenn Sie Ihren ersten Anruf bei 'info',' warn, ',' error' usw. machen. – user1767754