我正在使用django 1.3的日志记录功能并尝试实现timedrotatingfilehandler来每小时轮换日志。记录器每小时后成功旋转但似乎在每个日志请求中它都会截断文件。文件只有最后一个写的消息。这是django处理程序中的一个问题,或者我错过了某处。日志字典如下:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : "%(asctime)s:%(pathname)s:%(lineno)s: %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'logfile': {
'level':'DEBUG',
'class':'logging.handlers.TimedRotatingFileHandler',
'filename': "/tmp/log1.log",
'when' : 'hour',
'interval' : 0,
'formatter': 'standard',
},
},
'loggers': {
'collection': {
'handlers': ['logfile'],
'level': 'DEBUG',
},
}
}
请注意:当间隔设置为1时,日志不会被轮换。这是django中的一个错误吗?
答案 0 :(得分:1)
您需要设置:
'when' : 'H',
'interval' : 1,
从代码中,支持当前'何时'事件:
间隔是要计算的间隔数(例如,当=='H'和间隔== 2将导致2小时)。
答案 1 :(得分:0)
每当您创建日志文件时,只需在文件名中添加日期时间戳。这将确保永远不会截断该文件。
答案 2 :(得分:0)
我想有多个进程写入您的日志文件,在这种情况下,您可以使用ConcurrentLogHandler来避免截断。