【问题标题】:setting locale in Python for logging在 Python 中设置语言环境以进行日志记录
【发布时间】:2014-04-24 15:23:44
【问题描述】:

我正在尝试使用 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

注意逗号而不是“。”将秒与毫秒分开。我们在美国,应该有一个设置来控制这个。

我可以设置什么以使默认语言环境信息使用句点“。”小数点分隔符?

【问题讨论】:

标签: python logging locale


【解决方案1】:

在 basicConfig 试试这个:

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

在我的代码中,如果您愿意,可以使用任何字符,而不是 : 或 -。

输出:

2014-03-19 00:48:22 test

【讨论】:

  • 是的,我知道我可以明确设置我想要的任何日期格式,但这不是我要求的。我想知道如何影响%(asctime) 语言环境。
【解决方案2】:

毫秒不是区域设置的一部分 - 您不能使用例如指定它们strftime。因此,,nnn 以毫秒为单位根据ISO 8601 明确添加。

更新:虽然标准允许使用点或逗号,但这意味着首选逗号。目前,日志记录不允许此配置,因此如果您需要此配置,请参阅重复问题中的this answer

【讨论】:

  • 感谢您的参考,但en.wikipedia.org/wiki/ISO_8601#Times 说“小数点,逗号或点(没有任何偏好,如 2003 年第 22 届大会 CGPM 决议 10 所述,[12] 但根据 ISO 8601:2004)[13] 优先使用逗号作为时间元素与其分数之间的分隔符。
  • 该标准允许使用逗号或点。 basicConfig 的 Python 文档似乎没有说明是哪个。
【解决方案3】:

logging.basicConfig() 调用之后的以下代码 sn-p 在 Python 3.4 中适用于我:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 2013-01-10
    • 2020-04-05
    • 1970-01-01
    • 2019-08-27
    • 2011-01-24
    相关资源
    最近更新 更多