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

为什么logging.handlers.TimedRotatingFileHandler创建由root拥有的新日志文件?,logging,mod-wsgi,Logging,Mod Wsgi,我想轮换Django/apache2/wsgi网站的日志。但有时(不总是,这更奇怪)logging.handlers.TimedRotatingFileHandler会创建root拥有的新日志文件! 因此,我的应用程序不再具有对日志的写访问权限,并给我一个服务器错误 我在WSGIDaemonProcess设置中指定了umask=0007,但这也没有帮助 怎么会这样?如何修复它 即使您使用的是mod_wsgi嵌入式模式,也不应该发生这种情况,因为任何Python应用程序代码都不会以root用户身份

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

我在WSGIDaemonProcess设置中指定了umask=0007,但这也没有帮助


怎么会这样?如何修复它

即使您使用的是mod_wsgi嵌入式模式,也不应该发生这种情况,因为任何Python应用程序代码都不会以root用户身份运行,除非您对Apache源代码进行了黑客攻击,以禁用其中的安全保护,从而阻止您将用户/组设置为root用户

首先建议您验证您是否正在守护进程模式下运行,从而验证是否正在使用WSGIDaemonProcess定义

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