我在Windows机器上以 Vagrant (运行ubuntu)运行django webapp。该应用程序设置了RotatingFileHandler,在大多数情况下可以正确记录。但是最终日志文件已填满,此时它无法翻转
Logged from file util.py, line 79
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/handlers.py", line 78, in emit
self.doRollover()
File "/usr/lib/python2.7/logging/handlers.py", line 141, in doRollover
os.rename(self.baseFilename, dfn)
OSError: [Errno 26] Text file busy
(很多次)
这是RotatingFileHandler的配置代码段:
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'logs/application.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
问题似乎是它正在登录共享的vagrant目录,因此它遇到了Windows文件锁定问题。如果我将其更改为登录共享目录之外的目录,则可以滚动。
我的问题是,有什么办法可以防止上面的错误,而不必将日志移出vagrant目录?
我希望将其保留在其中,以便更轻松地将其移植到其他服务器上,这样我就可以在Windows中查看日志。
最佳答案
如果看到错误时正在运行Django开发服务器,请尝试
python manage.py runserver --noreload
这是因为默认情况下,两个Django服务器进程正在运行。一个是实际的服务器,另一个是检测代码中的更改并重新加载服务器。因此,settings.py会被导入两次,因此这两个进程将同时访问日志文件。
更多详细信息here。