我想臨時打開生產pyramid web項目中的調試消息,所以我調整了production.ini
文件,將其推送到Heroku,只看到錯誤和警告級別的消息。爲什麼從paste.deploy使用loadapp時未使用日誌級別?
所以我覺得,這似乎很奇怪,因爲如果我在本地PC上啓動像以下這樣的金字塔應用程序,我會得到所有日誌級別的消息。
env/bin/pserve production.ini
好了,這不是它究竟是如何運行在Heroku,它實際上是從little bit of python看起來像這樣運行(在一個名爲runapp.py
文件):
import os
from paste.deploy import loadapp
from waitress import serve
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app = loadapp('config:production.ini', relative_to='.')
serve(app, host='0.0.0.0', port=port)
現在,肯定不夠的,如果我在本地PC上執行此操作時,我的行爲與部署到Heroku時的行爲相同(幾乎不奇怪)。
python runapp.py
我的問題是,我在這裏錯過了什麼?爲什麼以第二種方式運行它將導致除ERROR和WARN之外的日誌消息被輸出爲標準輸出?當然,因爲它使用相同的production.ini
文件,它應該與我使用pserve
進程一樣工作?
這是我記錄部分從production.ini
:
###
# logging configuration
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###
[loggers]
keys = root, test
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = DEBUG
handlers = console
[logger_test]
level = DEBUG
handlers = console
qualname = test
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
很好,謝謝 - 那只是做這個工作。我用'import pyramid.paster'和'app = loadapp('config:production.ini',relative_to ='。')替換了這行:'paste.deploy import loadapp'只是傳遞給他們'production.ini'),它運行良好並且適用於我的日誌記錄,所以我是一個快樂的兔子:-)。 – kmp