对于Python 3.6的日志记录:
使用{msecs}
时,我希望style="{"
能够使用格式字符串。
我只想要3位数的msecs。
但是,以下所有尝试都失败了:
{msecs:3.0f}
{msecs:03d} # this is in the official documentation and doesn't work
我在这做错了什么?我的总体印象是format_spec
str.format()
fmt
在import logging
rl = logging.getLogger()
formatter_stdout = logging.Formatter(
fmt='{asctime},{msecs:03d} {message}',
style='{',
)
ch = logging.StreamHandler()
ch.setFormatter(formatter_stdout)
rl.addHandler(ch)
rl.warning('asdf')
参数中效果不佳
0x800706BA–HRESULT_FROM_WIN32(RPC_S_SERVER_UNAVAILABLE)
答案 0 :(得分:1)
您无法将日期/时间的格式定义为fmt
参数的一部分。对此有单独的datefmt
参数。但是,如果没有定义自定义formatTime()
功能,则无法按照16.6.4. Formatter Objects部分中的以下注释使用它来格式化毫秒:
在版本3.3中更改:以前,默认的ISO 8601格式是 硬编码如下例所示:
2010-09-06 22:38:15,292
其中 逗号之前的部分由strptime格式字符串处理 ('%Y-%m-%d %H:%M:%S'
),逗号后面的部分是毫秒 值。因为strptime没有格式占位符 毫秒,毫秒值使用另一种格式附加 string,'%s,%03d'
- 这两种格式字符串都是 硬编码到这个方法。随着更改,这些字符串被定义 作为可在实例上覆盖的类级属性 需要时的水平。属性的名称是default_time_format
(对于strptime格式字符串)和default_msec_format
(用于附加毫秒值)。
您可以在自定义formatTime()
函数中自行格式化毫秒,也可以使用此函数的默认实现,只设置格式化程序对象的default_msec_format
属性。
formatter_stdout.default_msec_format = '%s,%03d'
在fmt
参数中,您使用{asctime}
占位符来引用已格式化的日期/时间。
答案 1 :(得分:0)
这有效:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if (request.todo == "showPageAction")
{
chrome.tabs.query({active:true,currentWindow: true}, function(tabs){
chrome.pageAction.show(tabs[0].id);
});
}
});
不确定为什么要使用浮点数毫秒,但确实如此。