RotatingFileHandler" Text File Busy"在Windows中

时间:2014-04-04 02:44:27

标签: django windows logging vagrant

我在Windows机器上运行django webapp在vagrant(运行ubuntu)。该应用程序设置了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中查看日志。

1 个答案:

答案 0 :(得分:8)

如果您在看到错误时正在运行Django开发服务器,请尝试

python manage.py runserver --noreload

这是因为默认情况下,Django服务器的两个进程正在运行。一个是实际的服务器,另一个是检测代码中的更改并重新加载服务器。因此,settings.py被导入两次,因此两个进程同时访问日志文件。

更多详情here