Добавить строку в конец имени потока - PullRequest
0 голосов
/ 30 октября 2018

Я распечатываю некоторые данные, используя модуль регистрации. Вот мой код:

logging.basicConfig(
    format="%(asctime)s [%(threadName)s] [%(levelname)s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler(sys.stdout)
    ]
)

Я хотел бы добавить некоторые данные в конец имени потока следующим образом:

2018-10-30 19:43:54,304 [Thread-2 %SOME INFO%] [WARNING] Foo bar baz

Как я могу это сделать?

1 Ответ

0 голосов
/ 30 октября 2018

Методы «log» класса Logger (debug, info, warning, ...) могут принимать аргумент extra, являющийся словарем, который можно использовать в качестве пользовательских атрибутов. документация гласит:

Второй аргумент ключевого слова extra, который можно использовать для передачи словарь, который используется для заполнения __dict__ из LogRecord создан для регистрации событий с пользовательскими атрибутами. Эти Пользовательские атрибуты могут быть использованы по вашему усмотрению. Например, они может быть включен в зарегистрированные сообщения.

В вашем примере мы должны добавить новую информацию в атрибут format:

logging.basicConfig(
    format="%(asctime)s [%(threadName)s %(threadInfo)s] [%(levelname)s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler(sys.stdout)
    ]
)

И мы можем вызвать метод журнала следующим образом:

logging.info("Foo bar baz", extra={'threadInfo': 'SOME INFO'})
...