为什么logging.handlers.TimedRotatingFileHandler会创建root拥有的新日志文件?

时间:2012-12-19 02:57:14

标签: logging mod-wsgi

我想旋转Django / apache2 / wsgi网站的日志。但有时候(并不总是,这更奇怪)logging.handlers.TimedRotatingFileHandler创建root拥有的新日志文件! 所以我的应用程序不再具有对日志的写访问权限,并且给我一个服务器错误。

我在WSGIDaemonProcess设置中指定了umask = 0007,但这也无济于事。

怎么会发生这种情况?以及如何解决它?

1 个答案:

答案 0 :(得分:0)

即使您使用mod_wsgi嵌入模式也不应该发生,因为除非您已经破解了Apache源代码以禁用其中的安全保护,否则您将无法以root身份运行Python应用程序代码,从而阻止您设置用户/ group to root。

首先建议你验证你是否在守护进程模式下运行,从而确认是否使用了WSGIDaemonProcess定义。

另外请确保您没有使用古老版本的mod_wsgi。在3.0之前的mod_wsgi中,当以root身份运行时,解释器本身将在Apache父级中初始化,但是在创建子进程之后,应用程序的任何代码仍将作为凡人用户运行。但是,如果使用这样一个较旧的mod_wsgi版本并且你正在做一些非常怪异的事情,比如使用本地'sitecustomize.py'或者加载'.pth'文件以设置日志记录的副作用,那么你可能设法以root身份运行东西你不应该。