Meine aktuelle Format-String ist:Wie füge ich dem Python-Protokollformat-String ein benutzerdefiniertes Feld hinzu?
formatter = logging.Formatter('%(asctime)s : %(message)s')
und ich möchte ein neues Feld app_name und die haben einen anderen Wert in jedem Skript, das diesen Formatierer enthält genannt hinzuzufügen.
import logging
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.addHandler(syslog)
Aber ich bin nicht sicher, wie man den Logger, dass app_name
Wert zu übergeben in das Format-String zu interpolieren. Ich kann es offensichtlich in der Protokollnachricht erscheinen lassen, aber es jedes Mal passieren, aber das ist chaotisch.
Ich habe versucht:
logging.info('Log message', app_name='myapp')
logging.info('Log message', {'app_name', 'myapp'})
logging.info('Log message', 'myapp')
aber keine Arbeit.
Möchten Sie das wirklich bei jedem "Log" -Ruf eingeben? Wenn ja, sehen Sie sich die [docs] (http://docs.python.org/3.3/library/logging.html#logrecord-objects) an, wo es heißt: "Diese Funktionalität kann verwendet werden, um Ihre eigenen Werte in einen LogRecord zu injizieren ... "Aber das scheint ein Hauptfall für die Verwendung von' logger = logging.getLogger ('myapp') 'zu sein und in den 'logger.info'-Aufruf eingebaut zu haben. – abarnert