2014-03-18 64 views
0

我正在嘗試使用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 

注逗號而不是 「」從毫秒分離秒。我們在美國,應該有一個設置在某個地方來控制這個。

我可以設置什麼,以便默認語言環境信息使用句點「。」。爲小數點分隔符?

+0

可能重複[Python記錄:在時間格式使用毫秒(http://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format) –

+0

d'oh!這是一個重複的 –

回答

1

幾個毫秒不會有語言環境的一部分 - 你不能使用如指定它們strftime。因此,具有毫秒的,nnn根據ISO 8601明確加上。

更新:儘管標準允許使用點或逗號,但這意味着逗號是首選。目前,日誌記錄不允許這是可配置的,所以如果你需要這個,請參考this answer的重複問題。

+0

感謝您的參考,但https://en.wikipedia.org/wiki/ISO_8601#Times說「小數點,逗號或點(沒有任何偏好,如2003年第22屆大會CGPM第10號決議,[12]但根據ISO 8601:2004優先考慮逗號)[13]用作時間元素與其分數之間的分隔符「。 –

+0

該標準允許使用逗號或點。 basicConfig的Python文檔似乎沒有說哪個。 –

0

在basicConfig試試這個:

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

,而不是:或 - 在我的代碼,如果你願意,你可以使用任何字符。

輸出:

2014-03-19 00:48:22 test 
+0

是的,我知道我可以明確地設置我想要的任何日期格式,但那不是我問的。我想知道如何影響'%(asctime)'語言環境。 –

0

下面的代碼片段中,logging.basicConfig()電話後,對我的作品在Python 3.4:

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