복붙노트

[PYTHON] 플라스크 서버에서 콘솔 메시지 사용 중지

PYTHON

플라스크 서버에서 콘솔 메시지 사용 중지

솔라리스 서버가 독립 실행 형 모드로 실행되고 있습니다 (app.run () 사용). 하지만, 나는 콘솔에 어떤 메시지도 원하지 않는다.

127.0.0.1 - - [15/Feb/2013 10:52:22] "GET /index.html HTTP/1.1" 200 -
...

상세 모드를 비활성화하려면 어떻게합니까?

해결법

  1. ==============================

    1.Werkzeug logger의 설정 수준을 ERROR로 설정할 수 있습니다.이 경우 오류 만 기록됩니다.

    Werkzeug logger의 설정 수준을 ERROR로 설정할 수 있습니다.이 경우 오류 만 기록됩니다.

    import logging
    log = logging.getLogger('werkzeug')
    log.setLevel(logging.ERROR)
    

    다음은 OSX, Python 2.7.5, Flask 0.10.0에 대한 전체 예제 예제 테스터입니다.

    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()
    
  2. ==============================

    2.로깅 출력을 변경하려는 또 다른 이유는 테스트 용이며 서버 로그를 로그 파일로 재 지정합니다.

    로깅 출력을 변경하려는 또 다른 이유는 테스트 용이며 서버 로그를 로그 파일로 재 지정합니다.

    위의 제안을 위와 같이 작동시키지 못했습니다. 로거가 앱 시작의 일부로 설정되어있는 것처럼 보입니다. 앱을 시작한 후 로그 수준을 변경하여 작동시킬 수있었습니다.

    ... (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 출력 제거

    덕분에 :

  3. ==============================

    3.@Drewes 솔루션은 대부분의 시간 동안 작동하지만, 어떤 경우에는 여전히 werkzeug 로그를 얻는 경향이 있습니다. 정말로 그 중 하나를보고 싶지 않다면, 그렇게 사용하지 않는 것이 좋습니다.

    @Drewes 솔루션은 대부분의 시간 동안 작동하지만, 어떤 경우에는 여전히 werkzeug 로그를 얻는 경향이 있습니다. 정말로 그 중 하나를보고 싶지 않다면, 그렇게 사용하지 않는 것이 좋습니다.

    from flask import Flask
    import logging
    
    app = Flask(__name__)
    log = logging.getLogger('werkzeug')
    log.disabled = True
    app.logger.disabled = True
    

    나를 위해 중단 (500) 제기했을 때 실패했습니다.

  4. ==============================

    4.WSGI 서버를 사용하는 경우 로그를 없음으로 설정하십시오.

    WSGI 서버를 사용하는 경우 로그를 없음으로 설정하십시오.

    gevent_server = gevent.pywsgi.WSGIServer(("0.0.0.0", 8080), app,log = None)
    
  5. from https://stackoverflow.com/questions/14888799/disable-console-messages-in-flask-server by cc-by-sa and MIT license