我正在研究烧瓶应用程序,我使用mod_wsgi和Apache来托管烧瓶应用程序。我已经在应用程序中设置了日志记录,但我发现有相同的日志正在写入apache / logs / error.log之类的
[wsgi:error] ... BACK TO THE BROWSER
[wsgi:error] ... Selected records from table
[wsgi:error] ... mod_wsgi (pid=1654): Exception occurred processing WSGI script '/tmp/mod_wsgi-localhost:8000:0/htdocs/'.
[wsgi:error] ... ID 1123 Inserted in table
由于这个错误。日志被wsgi:错误和apache错误污染,因此很难分析日志文件。
他们是否有办法停止在error.log文件中编写wsgi.errors,或者我们是否可以将这些特定日志重定向到单独的日志文件?
我通常会向我的VirtualHost添加一个ErrorLog。这是我使用的Apache VirtualHost示例:
<VirtualHost *:443>
ServerName yourservername.com
ErrorLog /home/yourusername/apache_errors.log
WSGIDaemonProcess yourproject-https python-home=/home/yourusername/.virtualenvs/yourproject
WSGIScriptAlias /yourproject /var/www/html/yourproject/yourproject/wsgi.py process-group=yourproject-https application-group=yourproject-https
WSGIProcessGroup yourproject-https
Alias /yourproject/static/ /var/www/html/yourproject/static/
SSLENGINE on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLProtocol all -SSLv2
</VirtualHost>
那会诀窍吗?当然,您可以选择主目录以外的路径。
首先,您应该在VirtualHost中添加ErrorLog,然后您应该使用flask.logging.default_handler
来记录您的消息。
请注意,如果您的threadLocal环境中不存在您的请求应用程序,那么将使用std.strerr来记录消息,这将由于主日志而不是VirtualHost日志缓存消息。