我正在为我的项目使用日志记录,格式是
'format': '%(asctime)s %(message)s'
但是,时间不等于我当地的时间.例如
2013-01-08 11:04:07,383留言(这是UTC-6时间)
我想知道
我修好了,问题是我需要在setting.py中设置时区!
来自文档:
class logging.Formatter(fmt = None,datefmt = None)
返回Formatter类的新实例.实例初始化为整个消息的格式字符串,以及消息的日期/时间部分的格式字符串.如果未指定fmt,则使用'%(message)s'.如果未指定datefmt,则使用ISO8601日期格式.
也:
如果格式化字符串包含
'(asctime)',formatTime()则调用格式化事件时间.
因此,您可以使用自己的覆盖指定a datefmt或创建自定义Formatter子类formatTime.
而且,如果您想在当地时间和GMT时间(或其他任何时间)之间进行选择:
默认情况下,使用time.localtime(); 要为特定格式化程序实例更改此值,请将converter属性设置为与time.localtime()或time.gmtime()具有相同签名的函数.要为所有格式化程序更改它,例如,如果要在GMT中显示所有记录时间,请在Formatter类中设置converter属性.
该format和datefmt参数也可以传递给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!')
Run Code Online (Sandbox Code Playgroud)
我是在当地时间16:11:30运行的,输出结果如下:
2013-01-08 16:11:30 Out of cheese!
Run Code Online (Sandbox Code Playgroud)
实际上,看起来你要做的就是将标准时间格式的毫秒数减去,你可以通过截断字符串来做更简单的事情:
logging.basicConfig(format='%(asctime)-.19s %(message)s')
Run Code Online (Sandbox Code Playgroud)
但是,我认为明确指定日期格式更有意义.
| 归档时间: |
|
| 查看次数: |
7977 次 |
| 最近记录: |