我正在为我的项目使用日志记录,格式为
'格式': '%(asctime)s %(message)s'
但是,时间不等于我的当地时间。例如
2013-01-08 11:04:07,383 消息(这是 UTC-6 时间)
我想知道
- 如何使用我的本地时间登录
- 如何将时间格式更改为 2013-01-08 11:04:07
我已经修好了,问题是我需要在setting.py中设置时区!!!
从文档:
类 logging.Formatter(fmt=None, datefmt=None)
返回 Formatter 类的新实例。该实例使用整个消息的格式字符串以及消息的日期/时间部分的格式字符串进行初始化。如果未指定 fmt,则使用 '%(message)s'。如果未指定 datefmt,则使用 ISO8601 日期格式。
还:
如果格式化字符串包含
'(asctime)'
,formatTime()
则调用格式化事件时间。
因此,您可以指定一个,或使用您自己的覆盖datefmt
创建一个自定义子类。Formatter
formatTime
而且,如果您想在当地时间和 GMT 时间(或其他任何时间)之间进行选择:
默认情况下,使用 time.localtime();要为特定的格式化程序实例更改此设置,请将转换器属性设置为与 time.localtime() 或 time.gmtime() 具有相同签名的函数。要为所有格式化程序更改它,例如,如果您希望所有记录时间都以 GMT 显示,请在 Formatter 类中设置转换器属性。
format
anddatefmt
参数也可以传递给,basicConfig
如果您不使用显式Formatter
. 你不能这样设置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')
但是,我认为明确指定日期格式更有意义。