2016-12-16 42 views
0

根據該文檔(http://docs.pylonsproject.org/projects/waitress/en/latest/):如何將python金字塔女服務員日誌記錄重定向到heroku上的stdout?

服務員將其記錄輸出(包括應用程序異常 渲染)到命名服務員的Python記錄器對象。您可以使用正常的Python 記錄模塊API影響記錄器級別和輸出流。

這是所有文件的意見。我試圖將日誌記錄輸出重定向到stdout。我將如何去做這個pastedeploy .ini文件?

+0

[爲什麼使用來自paste.deploy loadapp時不使用我的日誌級別?]的可能的複製(http://stackoverflow.com/questions/19058215/why-is-my-log-level-沒有被使用的時候使用loadloading從粘貼部署) –

回答

0

您是否試圖將請求記錄到女服務員?我永遠也無法得到它的工作。如果事實上我在幾年前就問過這個問題,而有人說這是不可能完成的。

對於解決方案,我添加了一個金字塔「訂戶」,它爲每個請求執行所有日誌記錄。

編輯。

在審閱我的代碼時,我停止使用訂閱者並切換到使用補間記錄。兩種方式都可以工作。

tweens.py

import logging 
log = logging.getLogger(__name__) 

def simple_tween_factory(handler, registry): 
    # one-time configuration code goes here 

    def simple_tween(request): 
     # code to be executed for each request before 
     # the actual application code goes herE         

      response = handler(request) 

    # code to be executed for each request after 
    # the actual application code goes here 

      path_qs = request.path_qs 
      status = response.status 
      log.debug('[{0}] {1}'.format(status, path_qs))     ##See the path and query string for every response 

      return response 

return simple_tween 

添加到您的金字塔配置

config.add_tween('{}.tweens.simple_tween_factory'.format(<your app name>)) 
+0

我在heroku上,並沒有去標準輸出的一切都被黑洞。你可以詳細解釋一下你的解決方法和/或鏈接的東西,讓我開始?我很困難。 –

+0

查看添加補間的金字塔文檔。這也適用於heroku。我將在我的答案中發佈代碼 –

+0

我添加了我iPhone上的所有代碼。它應該是正確的。讓我知道如果你有問題 –

0

所以,這個問題似乎是官方的Heroku遷移文檔(http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/deployment/heroku.html)不告訴你,你需要在應用程序初始化之前初始化女服務員的記錄器。否則,沒有任何記錄。

所以,我的問題是不正確的。這並不是記錄會變得更加直接,而是記錄沒有進行。

解決方法是對runapp.py文件進行以下更改。

import os 

#from paste.deploy import loadapp 
import pyramid.paster 
from waitress import serve 

if __name__ == "__main__": 
    port = int(os.environ.get("PORT", 5000)) 
    #app = loadapp('config:production.ini', relative_to='.') 
    pyramid.paster.setup_logging('production.ini') 
    app = pyramid.paster.get_app('production.ini') 

    serve(app, host='0.0.0.0', port=port) 
+0

這也是Michael在這裏回答的:http://stackoverflow.com/questions/19058215/why-is-my-log-level-not-being-used-when - 使用 - loadapp-從粘貼部署 –

相關問題