根據該文檔(http://docs.pylonsproject.org/projects/waitress/en/latest/):如何將python金字塔女服務員日誌記錄重定向到heroku上的stdout?
服務員將其記錄輸出(包括應用程序異常 渲染)到命名服務員的Python記錄器對象。您可以使用正常的Python 記錄模塊API影響記錄器級別和輸出流。
這是所有文件的意見。我試圖將日誌記錄輸出重定向到stdout。我將如何去做這個pastedeploy .ini文件?
根據該文檔(http://docs.pylonsproject.org/projects/waitress/en/latest/):如何將python金字塔女服務員日誌記錄重定向到heroku上的stdout?
服務員將其記錄輸出(包括應用程序異常 渲染)到命名服務員的Python記錄器對象。您可以使用正常的Python 記錄模塊API影響記錄器級別和輸出流。
這是所有文件的意見。我試圖將日誌記錄輸出重定向到stdout。我將如何去做這個pastedeploy .ini文件?
您是否試圖將請求記錄到女服務員?我永遠也無法得到它的工作。如果事實上我在幾年前就問過這個問題,而有人說這是不可能完成的。
對於解決方案,我添加了一個金字塔「訂戶」,它爲每個請求執行所有日誌記錄。
編輯。
在審閱我的代碼時,我停止使用訂閱者並切換到使用補間記錄。兩種方式都可以工作。
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>))
我在heroku上,並沒有去標準輸出的一切都被黑洞。你可以詳細解釋一下你的解決方法和/或鏈接的東西,讓我開始?我很困難。 –
查看添加補間的金字塔文檔。這也適用於heroku。我將在我的答案中發佈代碼 –
我添加了我iPhone上的所有代碼。它應該是正確的。讓我知道如果你有問題 –
所以,這個問題似乎是官方的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)
這也是Michael在這裏回答的:http://stackoverflow.com/questions/19058215/why-is-my-log-level-not-being-used-when - 使用 - loadapp-從粘貼部署 –
[爲什麼使用來自paste.deploy loadapp時不使用我的日誌級別?]的可能的複製(http://stackoverflow.com/questions/19058215/why-is-my-log-level-沒有被使用的時候使用loadloading從粘貼部署) –