gpt4 book ai didi

python - 日志记录属性 asctime 生成本地时间

转载 作者:太空狗 更新时间:2023-10-30 02:12:39 25 4
gpt4 key购买 nike

我正在为我的项目使用日志记录,格式是

'format': '%(asctime)s %(message)s'

但是,时间不等于我的本地时间。例如

2013-01-08 11:04:07,383 消息(这是 UTC-6 时间)

我想知道

  1. 如何使用本地时间登录
  2. 如何将时间格式更改为 2013-01-08 11:04:07

我已经修好了,问题是我需要在setting.py中设置时区!!!

最佳答案

来自 the docs :

class logging.Formatter(fmt=None, datefmt=None)

Returns a new instance of the Formatter class. The instance is initialized with a format string for the message as a whole, as well as a format string for the date/time portion of a message. If no fmt is specified, '%(message)s' is used. If no datefmt is specified, the ISO8601 date format is used.

还有:

If the formatting string contains '(asctime)', formatTime() is called to format the event time.

因此,您可以指定一个 datefmt,或者使用您自己的 formatTime 覆盖创建自定义 Formatter 子类。

而且,如果您想在本地时间和 GMT 时间(或任何其他时间)之间进行选择:

By default, time.localtime() is used; to change this for a particular formatter instance, set the converter attribute to a function with the same signature as time.localtime() or time.gmtime(). To change it for all formatters, for example if you want all logging times to be shown in GMT, set the converter attribute in the Formatter class.

formatdatefmt 参数也可以传递给basicConfig。 ,如果您没有使用明确的 Formatter。您不能以这种方式设置转换器——但您不必这样做,因为默认时间是本地时间。

所以:

logging.basicConfig(format='%(asctime)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
log = logging.getLogger(__name__)
log.error('Out of cheese!')

我在本地时间 16:11:30 运行它,输出是:

2013-01-08 16:11:30 Out of cheese!

事实上,看起来您要做的只是将标准时间格式中的毫秒数去掉,您可以通过截断字符串来更简单地做到这一点:

logging.basicConfig(format='%(asctime)-.19s %(message)s')

但是,我认为明确指定日期格式更有意义。

关于python - 日志记录属性 asctime 生成本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14226205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com