这是我的apache error.log的一个例子:
[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', '')])注意最后一个日志条目:error。
我想在适当的级别登录apache2。我希望最后一项是:信息,而不是:错误。
我的烧瓶-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配置为在学徒级别登录,以便我的烧瓶logger.info读取:info而不是:error
发布于 2015-10-17 01:33:21
Python日志记录级别与Apache日志级别无关。显然,Apache将应用程序mod_wsgi的输出作为error级别来处理。让您的web服务器日志web服务器相关的事情。配置Python将应用程序日志发送到其他文件。
logging.basicConfig(filename='/path/to/app.log', level=logging.INFO)发布于 2015-10-17 02:46:38
当使用stdout/stderr确保通常输出任何消息时,将在Apache级别使用错误日志级别。如果没有这样做,并且试图使用Python级别的日志级别尝试打开调试,那么如果在调试级别将它传递到Apache日志中,您将永远不会看到它。这是因为Apache日志级别将覆盖和抑制它。您可能不希望设置Apache日志级别来允许它,因为它会从Apache模块中产生大量的噪音,您真的不想这样做。
因此,只需忽略Apache说这是一个错误级别的事实,并且为它仍然在被记录而感到高兴。面对两个日志级别设置,一个在Apache中,一个在Python中,这确实是最好的折衷方案。
总的来说,我建议不要像其他人建议的那样将Python日志配置为使用不同的文件,除非您确保使用的日志处理程序正确地处理来自多个进程的写入和日志旋转。Apache可以很好地处理这两种情况,但是Python标准记录器不能。
https://stackoverflow.com/questions/33177361
复制相似问题