Flask 서버에서 콘솔 메시지 중단
독립 실행 형 모드에서 실행중인 Flask 서버가 있습니다 (사용 app.run()
). 하지만 콘솔에 표시되는 메시지가 표시됩니다.
127.0.0.1 - - [15/Feb/2013 10:52:22] "GET /index.html HTTP/1.1" 200 -
...
상세 모드를 어디에서 받습니까?
Werkzeug 로거의 설정 수준을 ERROR로 만 기록됩니다.
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
다음은 OSX, Python 2.7.5, Flask 0.10.0에서 작동하는 전체 예제 testet입니다.
from flask import Flask
app = Flask(__name__)
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
이 솔루션은 자신의 프린트와 스택 트레이스를 얻을 수있는 방법을 제공하지만 공급의 정보 수준 로그는 127.0.0.1 - - [15/Feb/2013 10:52:22] "GET /index.html HTTP/1.1" 200
from flask import Flask
import logging
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.disabled = True
@Drewes 솔루션은 대부분의 경우 작동하지만 경우에 따라 werkzeug 로그를 얻을 수 있습니다. 그렇게보고 싶지 않다면 그렇게하는 것이 좋습니다.
from flask import Flask
import logging
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.disabled = True
app.logger.disabled = True
나를 위해 그것은 제기 abort(500)
멸종 위기에 처했습니다 .
로깅 출력을 변경하려는 또 다른 이유는 테스트를위한 로그 서버 로그를 로그 파일로 리디렉션하기위한 것입니다.
위의 제안도 작동하지. 로거가 앱 시작의 일부로 준비 것입니다. 앱 을 사용 후 로그 수준을 변경하여 작동 수 있습니다 .
... (in setUpClass)
server = Thread(target=lambda: app.run(host=hostname, port=port, threaded=True))
server.daemon = True
server.start()
wait_for_boot(hostname, port) # curls a health check endpoint
log_names = ['werkzeug']
app_logs = map(lambda logname: logging.getLogger(logname), log_names)
file_handler = logging.FileHandler('log/app.test.log', 'w')
for app_log in app_logs:
for hdlr in app_log.handlers[:]: # remove all old handlers
app_log.removeHandler(hdlr)
app_log.addHandler(file_handler)
불행히도 * Running on localhost:9151
첫 번째 상태 확인은 여전히 표준 출력으로 인쇄 된 많은 테스트를 실행하면 출력됩니다.
"그래서 왜 log_names
?", 당신은 묻습니다. 제 경우에는 제거하는 추가 로그가 제거해야합니다. 다음을 통해 log_names에 추가 할 로거를 수 있습니다.
from flask import Flask
app = Flask(__name__)
import logging
print(logging.Logger.manager.loggerDict)
참고 사항 : flaskapp.getLogger () 또는 다른 버전이 있으면 좋을 것입니다. 어떤 아이디어?
추가 키워드 : 테스트 로그에서 stdout 출력 제거
감사합니다 :
- http://code.activestate.com/lists/python-list/621740/ 및
- 다른 클래스와 가져 오기를 사용하여 즉시 Python 로깅으로 파일 핸들을 변경하는 방법
WSGI 서버를 사용하는 경우 로그를 없음으로 설정하십시오.
gevent_server = gevent.pywsgi.WSGIServer(("0.0.0.0", 8080), app,log = None)
억제하려면 Serving Flask app ...
:
os.environ['WERKZEUG_RUN_MAIN'] = 'true'
app.run()
답변이 늦었지만 각 콘솔 메시지 ( abort(...)
오류 중에 표시된 메시지 포함)를 억제하는 방법을 찾았습니다 .
import os
import logging
logging.getLogger('werkzeug').disabled = True
os.environ['WERKZEUG_RUN_MAIN'] = 'true'
이것은 기본적으로 Slava V 와 Tom Wojcik 의 답변의 조합입니다.
다른 답변 중 어느 것도 나를 위해 올바르게 작동하지 않았지만 Peter의 의견을 기반으로 해결책을 찾았습니다 . Flask는 더 이상 logging
로깅에 사용하지 않으며 클릭 패키지 로 전환했습니다 . 재정의 click.echo
하고 click.secho
.NET에서 Flask의 시작 메시지를 제거했습니다 app.run()
.
import logging
import click
from flask import Flask
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
def secho(text, file=None, nl=None, err=None, color=None, **styles):
pass
def echo(text, file=None, nl=None, err=None, color=None, **styles):
pass
click.echo = echo
click.secho = secho
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
로깅 수준을로 설정하고 ERROR
빈 함수가있는 클릭 메서드를 재정의하는 사이 에 모든 비 오류 로그 출력을 방지해야합니다.
브 루트 포스 당신이 정말로이다 () 문 아무것도 인쇄 옆에있는 콘솔에 로그인하지 않으려면 방법은 그것을 할 수 있습니다 logging.basicConfig(level=logging.FATAL)
. 이렇게하면 치명적인 상태 인 모든 로그가 비활성화됩니다. 인쇄를 비활성화하지는 않지만 예, 생각 만하십시오 : /
편집 : 내가 사용한 문서에 대한 링크를 넣지 않는 것이 이기적이라는 것을 깨달았습니다 :) https://docs.python.org/3/howto/logging.html#logging-basic-tutorial
첫 번째 요점 : 공식 Flask 문서에 따르면 app.run ()을 사용하여 Flask 애플리케이션을 실행하면 안됩니다. 가장 좋은 해결책은 uwsgi를 사용하는 것이므로 "--disable-logging"명령을 사용하여 기본 플라스크 로그를 비활성화 할 수 있습니다.
예를 들면 :
uwsgi --socket 0.0.0.0:8001 --disable-logging --protocol=http -w app:app
참고 URL : https://stackoverflow.com/questions/14888799/disable-console-messages-in-flask-server
'ProgramingTip' 카테고리의 다른 글
두 개의 링크에 동일한 텍스트를 방법은 무엇입니까? (0) | 2020.11.04 |
---|---|
Datatables에서 빈 데이터 메시지를 표시하는 방법 (0) | 2020.11.04 |
다른 컨트롤러 작업 방법간에 데이터 전달 (0) | 2020.11.04 |
javascript / jquery에서 base64를 이미지로 변환 (0) | 2020.11.04 |
HTTPS / 웹 소켓에서 실행되는 Webpack Dev Server 보안 (0) | 2020.11.04 |