내가 CherryPy로 첫 시도에서 기억하는 한, 나는 똑같은 욕망을 가지고 있었다. 그래서 여기에 stdout 로깅을 끄는 것 외에 더 말할 것이 있습니다.
CherryPy에는 environments : staging, production, embedded, test_suite가 사전 정의되어 있으며 here으로 정의되어 있습니다. 각 환경에는 일련의 구성이 있습니다. 따라서 stdout 로깅을 개발하는 것은 실제로 매우 유용하지만, 프로덕션 환경에서는 그렇지 않습니다. 배치에 따라 환경을 설정하는 것은 CherryPy에서 구성을 처리하는 올바른 방법입니다.
특정 경우에 stdout 로깅은 log.screen
으로 제어됩니다. 프로덕션 환경에서는 이미 비활성화되어 있습니다.
다음은 예제이지만, 응용 프로그램 내부의 환경을 설정하는 것이 좋습니다. 대신 cherryd
의 --environment
을 사용하는 것이 좋습니다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8,
# Doing it explicity isn't a recommended way
# 'log.screen' : False
}
}
class App:
@cherrypy.expose
def index(self):
return 'Logging example'
if __name__ == '__main__':
# Better use cherryd (http://cherrypy.readthedocs.org/en/latest/install.html#cherryd)
# for setting the environment outside the app
cherrypy.config.update({'environment' : 'production'})
cherrypy.quickstart(App(), '/', config)
thx @saaj하지만 cherryd_app.py와 함께 cherryd_app.py를 실행하는 방법은 무엇입니까? 나는 cherryd cherry_app.py를 시도하지만 실행되는 것처럼 보이지만 웹 페이지에는 아무것도 없다. – inye
@inye''cherryd''는 기본적으로''cherrypy.quickstart''와 상호 배타적으로 사용되어야합니다. 왜냐하면 그것들은 기본적으로 다른 유스 케이스에서 같은 것을하기 때문입니다. 나는''if __name__ == '__main __'''과 그 바깥에있는 코드를 의미합니다. 따라서 나의 예제에서는''App'' 클래스 다음에''cherrypy.tree.mount (App(), '/', config)''를 추가하고 다시 시도하십시오. 예 : ''cherryd -e 생산 체리 _app.py''. – saaj
@inye 아니요, 올바른 명령 줄은 모듈 실행보다는 모듈 가져 오기를 수행하기 때문에''cherryd -e production -i cherry_app''입니다. – saaj