Python记录器以IS8601格式输出日期

Rem*_*tec 5 python iso8601 python-2.7

有没有一种方法可以使Python记录器以ISO8601格式输出日期。

我的记录器是这样设置的...

logging.basicConfig(
    format="%(message)s - %(asctime)s)
Run Code Online (Sandbox Code Playgroud)

从Python文档(位于此处:https : //docs.python.org/2/howto/logging.html)中,您可以看到以下内容:

日期/时间显示的默认格式(如上所示)为ISO8601。如果您需要对日期/时间格式的更多控制,请为basicConfig提供datefmt参数,如以下示例所示:

唯一的问题是日期输出不是ISO8601格式。上述格式化程序输出的日期是:

2018-06-15 11:07:41,454

这不是此处定义的ISO8601格式:https//en.wikipedia.org/wiki/ISO_8601

以正确的格式获取日期的最简单方法是什么?可以开箱即用吗?还是需要导入软件包来完成?

我尝试添加日期格式化程序,例如,datefmt="%Y-%m-%dT%H:%M:%S.%f %Z"但是某些格式化字符无法识别-即%f,它%Z给出了时区的文本描述,而不是数字偏移量。

Jac*_*sey 12

这在大多数情况下对我有用:

logging.basicConfig(
    format="%(asctime)s %(message)s",
    datefmt="%Y-%m-%dT%H:%M:%S%z"
)
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

2019-11-09T01:18:13-0800 Something logged here

更新:

我一直用来包含毫秒的单行:

logging.Formatter.formatTime = (lambda self, record, datefmt: datetime.datetime.fromtimestamp(record.created, datetime.timezone.utc).astimezone().isoformat())
Run Code Online (Sandbox Code Playgroud)

输出看起来像

2021-08-05T22:43:02.985614+00:00 Something logged here