Mój obecny format string jest:Jak dodać niestandardowe pole do łańcucha formatu dziennika Python?
formatter = logging.Formatter('%(asctime)s : %(message)s')
i chcę dodać nowe pole o nazwie APP_NAME i który będzie miał inną wartość w każdym skrypcie zawierający tę formatowania.
import logging
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.addHandler(syslog)
Ale nie jestem pewien, w jaki sposób przekazać tę wartość app_name
do rejestratora interpolować w ciągu formatu. Mogę oczywiście sprawić, by pojawił się w wiadomości dziennika, ale przekazywał ją za każdym razem, ale jest to niechlujne.
Próbowałem:
logging.info('Log message', app_name='myapp')
logging.info('Log message', {'app_name', 'myapp'})
logging.info('Log message', 'myapp')
ale żadna praca.
Czy na pewno chcesz przekazać to do każdego wywołania "log"? Jeśli tak, to spójrz na [the docs] (http://docs.python.org/3.3/library/logging.html#logrecord-objects), gdzie jest napisane: "Ta funkcja może być wykorzystana do wstrzyknięcia twoich własnych wartości do LogRecord ... "Ale wydaje się, że jest to główny powód użycia' logger = logging.getLogger ('myapp') 'i wypalenie go w wywołaniu' logger.info'. – abarnert