我正在为我的项目使用日志记录,格式为
<>之前'format': '%(asctime)s %(消息)s'之前然而,时间不等于我的当地时间。如
2013-01-08 11:04:07 . 383消息(这是UTC-6时间)
I want to know
- 如何使用我的本地时间日志
- 如何将时间格式更改为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
,则format
和datefmt
参数也可以传递给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')
但是,我认为明确指定日期格式更有意义。