2015-10-16 103 views
0

错误的水平这是我的Apache error.log中的一个例子:瓶WSGI记录在日志上的Apache2

[Fri Oct 16 18:28:24.816206 2015] [:info] [pid 13739:tid 139772762691456] mod_wsgi (pid=13739): Attach interpreter ''. 
[Fri Oct 16 18:28:41.608894 2015] [:info] [pid 13739:tid 139772651718400] [remote 10.1.10.37:56161] mod_wsgi (pid=13739, process='dsapp', application=''): Loading WSGI script '/var/www/blackbird/blackbird.wsgi'. 
[Fri Oct 16 18:28:42.176915 2015] [:info] [pid 13740:tid 139772651718400] [remote 10.1.10.154:49761] mod_wsgi (pid=13740, process='app2', application=''): Loading WSGI script '/var/www/whiteboard_v2/whiteboard.wsgi'. 
[Fri Oct 16 18:28:45.863991 2015] [:error] [pid 13740:tid 139772467078912] INFO:app.api.routes:API/search: ImmutableMultiDict([('m', 'n'), ('q', '')]) 

通知的最后的日志条目[:错误。

我想在apache2上的相应级别登录。我想最后一个条目说[:info]而不是[:error]。

我烧瓶WSGI配置如下:

from flask import redirect, url_for, jsonify, request, send_file, current_app 
from . import api 
from flask.ext.cors import cross_origin 
from ..models import Inventory 
from app import db 
import logging 

logging.basicConfig(level=logging.INFO) 
logger = logging.getLogger(__name__) 

@api.route('/api/search', methods=['GET']) 
@cross_origin() 
def index(): 
    d=request.args['q'] 
    m=request.args['m'] 
    logger.info('API/search: %s', request.args) 

你可以清楚地看到我的意图是“信息”。我如何配置Apache登录到approrpiate级别,以便我的瓶子logger.info读取[:info]而不是[:error]?

+0

谢谢,这是一个非常简单的解决方案。 logging.basicConfig(filename =“/ var/log/app/info.log”,level = logging.INFO) –

回答

1

Python日志记录级别与Apache日志记录级别无关。显然,Apache对待来自应用mod_wsgi的输出运行为error级别。让你的w​​eb服务器登录web服务器相关的东西。配置Python将您的应用程序日志发送到其他文件。

logging.basicConfig(filename='/path/to/app.log', level=logging.INFO) 
1

当使用stdout/stderr来确保通常会输出任何消息时,会在Apache级别使用错误日志级别。如果没有这样做,并且您尝试使用Python级别的日志级别来尝试打开调试,那么如果它在调试级别传递给Apache,则您将永远无法在Apache日志中看到它。这是因为Apache日志级别会覆盖并压制它。你不希望设置Apache日志级别来允许它,因为它会从你真正不想要的Apache模块中产生大量的噪音。

所以只是忽略了Apache说它是一个错误级别并且很高兴它仍然被记录下来的事实。这对于拥有两个日志级别设置来说是最好的折衷方案,一个在Apache中,另一个在Python中。

总的来说,我建议不要配置Python日志记录以使用其他人建议的不同文件,除非您确保使用正确处理来自多个进程的写入并正确记录旋转的日志记录处理程序。 Apache处理这两种很好,但Python标准记录器不。