Литеральный формат формата = "% (asctime) s -% (имя уровня) s -% (сообщение) s") - PullRequest
0 голосов
/ 28 августа 2018

Я учусь использовать logging вместо print для отладки моего кода:

In [89]: logging.basicConfig(level=logging.DEBUG, format=" %(asctime)s - %(levelname)s - %(message)s")
In [90]: logging.debug("Some debugging details.")
 2018-08-28 16:41:15,371 - DEBUG - Some debugging details.

Я пытался переписать формат как буквальный,

In [5]: logging.basicConfig(level=logging.DEBUG, format=f" {(asctime)} - {(levelname)} - {(message)}")
NameError: name 'asctime' is not defined

или

In [5]: logging.basicConfig(level=logging.DEBUG, format=f" {(asctime)} - {(levelname)} - {(message)}")
-------------------------------------------------------------------------
In [6]: logging.basicConfig(level=logging.DEBUG, format=f" {(asctime)s} - {(levelname)s} - {(message)s}")
  File "<fstring>", line 1
    ((asctime)s)
              ^
SyntaxError: invalid syntax

Можно ли написать буквальный формат format=" %(asctime)s - %(levelname)s - %(message)s"?

1 Ответ

0 голосов
/ 28 августа 2018

Нет, это невозможно, потому что имена заполнителей в формате регистрации интерпретируются модулем logging, в то время как выражения в f-строке интерпретируются самим компилятором Python, который не знает о значении имена заполнителей, понятные только модулю logging.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...