
对于标准的Apache安装,您尝试将访问日志和错误日志混在一起,这违反了最佳实践。传统上将它们分开放置,以便可以对服务器流量的访问日志进行分析。
也就是说,您是否尝试过更改Apache中的
ErrorLog和
CustomLog指令以使用同一文件?
当我在命令中使用mod_wsgi-express时:
mod_wsgi-express start-server --access-log --access-log-name application.log --error-log-name application.log
它正在生成:
<IfDefine MOD_WSGI_ROTATE_LOGS>ErrorLog "|/usr/sbin/rotatelogs /tmp/mod_wsgi-localhost:8000:502/application.log.%Y-%m-%d-%H_%M_%S 5M"</IfDefine><IfDefine !MOD_WSGI_ROTATE_LOGS>ErrorLog "/tmp/mod_wsgi-localhost:8000:502/application.log"</IfDefine>LogLevel warn<IfDefine MOD_WSGI_ACCESS_LOG><IfModule !log_config_module>LoadModule log_config_module ${MOD_WSGI_MODULES_DIRECTORY}/mod_log_config.so</IfModule>LogFormat "%h %l %u %t "%r" %>s %b" commonLogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" combinedLogFormat "undefined" custom<IfDefine MOD_WSGI_ROTATE_LOGS>CustomLog "|/usr/sbin/rotatelogs /tmp/mod_wsgi-localhost:8000:502/application.log.%Y-%m-%d-%H_%M_%S 5M" common</IfDefine><IfDefine !MOD_WSGI_ROTATE_LOGS>CustomLog "/tmp/mod_wsgi-localhost:8000:502/application.log" common</IfDefine></IfDefine>结果
application.log是:
[Fri Jun 10 07:17:30.845264 2016] [mpm_prefork:notice] [pid 84334] AH00163: Apache/2.4.18 (Unix) mod_wsgi/4.5.2 Python/2.7.10 configured -- resuming normal operations[Fri Jun 10 07:17:30.845518 2016] [core:notice] [pid 84334] AH00094: Command line: 'httpd (mod_wsgi-express) -f /tmp/mod_wsgi-localhost:8000:502/httpd.conf -D MOD_WSGI_ACCESS_LOG -D FOREGROUND'::1 - - [10/Jun/2016:07:17:36 +1000] "GET / HTTP/1.1" 200 709::1 - - [10/Jun/2016:07:17:37 +1000] "GET / HTTP/1.1" 200 709::1 - - [10/Jun/2016:07:17:37 +1000] "GET / HTTP/1.1" 200 709::1 - - [10/Jun/2016:07:17:38 +1000] "GET / HTTP/1.1" 200 709::1 - - [10/Jun/2016:07:17:38 +1000] "GET / HTTP/1.1" 200 709[Fri Jun 10 07:17:39.784486 2016] [mpm_prefork:notice] [pid 84334] AH00169: caught SIGTERM, shutting down
因此,从技术上讲,它应该适用于独立的Apache安装,并且错误和访问日志仅通过设置
ErrorLog和
CustomLog相同的文件即可进入同一文件。
至于其他Django日志记录,它可能会由于异常而在内部生成,您仍然需要:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django': { 'handlers': ['console'], 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), }, },}这告诉Django从概念上来说登录到终端,哪个mod_wsgi将拦截并发送到Apache错误日志,上面的错误日志将与之合并为应用程序日志。
顺便说一句,如果要在需要将日志记录输出到标准输出的容器中运行Apache / mod_wsgi,请不要自己这样做。使用mod_wsgi-
express,因为它是专门为在容器中使用而设计的。在这种情况下,您只需要使用:
mod_wsgi-express start-server --access-log --log-to-terminal
如果要启用访问日志(默认情况下默认为关闭,通常只是容器部署时的噪音),并且会担心将访问日志和错误日志发送到终端,以便Docker可以捕获它。
如果需要更多信息或帮助,请使用mod_wsgi邮件列表。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)