日志属性asctime生成本地时间



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

<>之前'format': '%(asctime)s %(消息)s'之前

然而,时间不等于我的当地时间。如

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

I want to know

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

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

From the docs:

类日志记录。格式化程序(fmt = None, datefmt = None)

返回Formatter类的新实例。实例初始化为整个消息的格式字符串,以及消息的日期/时间部分的格式字符串。如果未指定fmt,则使用'%(message)s'。如果不指定日期,则使用ISO8601日期格式。

:

如果格式化字符串中包含'(asctime)',则调用formatTime()对事件时间进行格式化。

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

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

默认使用time.localtime();要为特定的格式化程序实例更改这一点,请将converter属性设置为具有与time.localtime()或time.gmtime()相同签名的函数。要为所有格式化程序更改它,例如,如果您希望所有日志记录时间都以GMT显示,请在Formatter类中设置converter属性。

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

:

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')

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

最新更新