使用自 UNIX 纪元以来的秒数作为日志记录中的日期格式

fin*_*oot 4 python time logging epoch

文档logging.basicConfig说:

datefmt- 使用 所接受的指定日期/时间格式time.strftime()

但是,如果我查看 的文档time.strftime(),就会发现其中甚至没有提到 UNIX 纪元时间戳。


更新:如果我按照 的%s联机帮助页中的描述使用strftime(3),它适用于 Linux,但不适用于 Windows。

import time
time.strftime('%s')
Run Code Online (Sandbox Code Playgroud)

结果是

ValueError: Invalid format string
Run Code Online (Sandbox Code Playgroud)

因此,我正在寻找一种独立于平台的方法来使用自 UNIX 纪元以来的秒数作为日志记录中的日期格式。

fin*_*oot 6

肯定不可能做到这一点asctime,因为有关支持的格式字符串的行为strftime是依赖于平台的。

\n\n

文档中的“strftime()strptime()行为”部分有一段关于此内容的内容:

\n\n
\n

支持的全套格式代码因平台而异,因为Python调用平台C库\xe2\x80\x99sstrftime()函数,平台变化很常见。要查看您的平台支持的完整格式代码集,请参阅strftime(3)文档。

\n
\n\n

https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

\n\n
\n\n

但是,忽略asctime,您仍然可以在记录格式字符串中使用自 UNIX 纪元以来的秒数。还有另一个属性称为created

\n\n
\n

%(created)f- 创建 LogRecord 的时间(由 返回time.time())。

\n
\n\n

https://docs.python.org/3/library/logging.html#logrecord-attributes

\n\n

由于time.time()适用于 Linux 和 Windows,因此您可以在日志记录格式字符串中使用created代替。asctime

\n