Я использую стандартный Python способ ведения журнала, как описано в различных местах, включая учебные пособия. Все мои модули пакета имеют следующее определение логгера, и затем я использую его по всему модулю
logger = logging.getLogger(__name__)
Я использую SysLogHandler
, и мои логгеры являются иерархическими по всему пакету. У меня есть systemd.service
файл, который запускает скрипт как процесс-демон. Я настраиваю родительский логгер (прямой потомок root
логгер) с соответствующими фильтрами + обработчиками и т. Д. c. в этом скрипте.
Я использовал довольно простую c строку формата
'%(name)s[%(process)d]: %(levelname)-10s %(message)s'
Это работает просто отлично, но я бы хотел использовать processName
вместо этого.
'%(processName)s[%(process)d]: %(levelname)-10s %(message)s'
Я ожидаю, что это сделает мои записи журнала более единообразными в syslog и сделает связь записей журнала с процессом гораздо более очевидной (имя процесса, а не только pid).
Я просмотрел другие ответы SO и просмотрел страницы библиотек logging
, logging.handlers
, а также поваренную книгу для ведения журналов . Ни один из них, похоже, не намекает на то, как можно использовать этот processName
.
Все, что мне нужно, это увидеть имя моего скрипта вместо значения, возвращаемого mutliprocess.current_process().name
, которое всегда равно MainProcess
Есть ли документ, который мне не хватает? Или я поступаю неправильно ...?
Python версия: 3.5.X ОС: Ubuntu 16.04 и Centos7