Python 记录自启动以来的时间(以秒为单位)

Elr*_*337 3 python logging python-logging

我想添加我的程序达到日志输出的秒数。

relativeCreated 我在这里找到了,但它会给我毫秒,例如:

logging.basicConfig(format='{relativeCreated:8.0f}ms {levelname:s} {message:s}', style="{")
Run Code Online (Sandbox Code Playgroud)

结果是

4081ms INFO my message
6012ms INFO another message
Run Code Online (Sandbox Code Playgroud)

但由于我预计运行时间以小时为单位,所以我更愿意。

4s INFO my message
6s INFO another message
Run Code Online (Sandbox Code Playgroud)

我试过

logging.basicConfig(format='{relativeCreated / 1000:4.0f}s {levelname:s} {message:s}', style="{")
Run Code Online (Sandbox Code Playgroud)

但这会导致

KeyError: 'relativeCreated / 1000'
Run Code Online (Sandbox Code Playgroud)

hur*_*nko 5

您可以子类化logging.Formatter来修改relativeCreated:

import logging
import time

class RelativeSeconds(logging.Formatter):
    def format(self, record):
        record.relativeCreated = record.relativeCreated // 1000
        return super().format(record)

formatter = RelativeSeconds("%(relativeCreated)ds %(levelname)s %(message)s")

logging.basicConfig()
logging.root.handlers[0].setFormatter(formatter)

logging.error("Test 1")
time.sleep(2)
logging.error("Test 2")
Run Code Online (Sandbox Code Playgroud)

印刷:

0s ERROR Test 1
2s ERROR Test 2
Run Code Online (Sandbox Code Playgroud)