2017-08-14 123 views
1

我正在運行此應用程序來測試日誌記錄。它在我的本地系統上運行良好,但是如果我使用mod_wsgi在apache服務器上運行它,它不起作用。沒有錯誤,但是,沒有創建foo.log。使用wsgi登錄不起作用,沒有創建文件

我使用python 3.5

的代碼看起來是這樣的:

from flask import Flask 
import logging 
from logging.handlers import RotatingFileHandler 

app = Flask(__name__) 

@app.route('/') 
def foo(): 
    app.logger.warning('A warning occurred (%d apples)', 42) 
    app.logger.error('An error occurred') 
    app.logger.info('Info') 
    return "foo" 

if __name__ == '__main__': 
    handler = RotatingFileHandler('foo.log', maxBytes=10000, backupCount=1) 
    handler.setLevel(logging.INFO) 
    app.logger.addHandler(handler) 
    app.run(host='0.0.0.0') 

的WSGI文件看起來像這樣:

#!/usr/bin/python 
import sys 
import logging 
logging.basicConfig(stream=sys.stderr) 
sys.path.insert(0,"/var/www/FlaskApp/") 

from FlaskApp import app as application 
application.secret_key = 'Add your secret key' 

回答

0

當通過Apache服務器上運行,該腳本的pwd不一定與您終端的密碼相同。

或者:

  1. 使用的完整路徑,而不是foo.log

或者:

  • 在系統中搜索foo.log,並找出阿帕奇決定把它:)
  • +0

    我試過「find -name foo.log」沒有任何迴應。 – Kresten

    +0

    您不會找到它,因爲Apache用戶無法在運行時寫入Apache的當前工作目錄。 –

    1

    不要使用單獨的日誌文件爲Python logging模塊使用Apache/mod_wsgi時。而是配置logging模塊將消息輸出到終端的流處理程序(stdout/stderr)。這些消息將被收集到Apache錯誤日誌中。使用Apache或系統機制來轉動日誌文件。