Настройка языка в Python для ведения журнала

Я пытаюсь использовать фреймворк Python. Это хорошо работает, за исключением одного.

Этот пример кода:

import logging

FORMAT = '%(asctime)-15s %(message)s'
logging.basicConfig(format=FORMAT, level=logging.INFO)
logging.info('test')

производит этот вывод:

2014-03-18 11:23:43,082 test

Обратите внимание на запятую, а не на. отделяя секунды от миллисекунд. Мы находимся в США, и там должно быть место, где это контролируется.

Что я могу установить так, чтобы информация локали по умолчанию использовала период ".". для десятичного разделителя?

3 ответа

Миллисекунды не являются частью языка - вы не можете указывать их, используя, например, strftime. Следовательно ,nnn с миллисекундами закрепляется явно в соответствии с ISO 8601.

Обновление: хотя стандарт допускает точку или запятую, это означает, что запятая является предпочтительной. В настоящее время регистрация не позволяет настраивать ее, поэтому, если вам это нужно, обратитесь к этому ответу в дублированном вопросе.


Следующий фрагмент кода после logging.basicConfig() работает для меня в Python 3.4:

for h in logging.getLogger().handlers:
 h.formatter.default_msec_format = '%s.%03d'


Попробуйте это на basicConfig:

logging.basicConfig(format=FORMAT, level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S")

вместо: или - в моем коде вы можете использовать любой символ, если хотите.

Вывод:

2014-03-19 00:48:22 test

licensed under cc by-sa 3.0 with attribution.