2015-10-16 104 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標準記錄器不。