"Flask 모든 request 로깅 예제"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;Flask 모든 request 로깅 예제
;Flask 모든 method, path, data 로깅 예제
;Flask 모든 method, path, data 로깅 예제


==예제 1==
* 환경변수 FLASK_ENV=development
<syntaxhighlight lang='python'>
<syntaxhighlight lang='python'>
from flask import Flask
from flask import Flask
from flask import request
from flask import request
from logging.config import dictConfig
dictConfig({
    'version': 1,
    'formatters': {'default': {'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'}},
    'handlers': {'wsgi': {'class': 'logging.StreamHandler', 'formatter': 'default'}},
    'root': {'level': 'DEBUG', 'handlers': ['wsgi']}
})
application = app = Flask(__name__)
application = app = Flask(__name__)


19번째 줄: 15번째 줄:
     app.logger.debug('[%s][%s][%s]', request.method, path, request.get_data())
     app.logger.debug('[%s][%s][%s]', request.method, path, request.get_data())
     return 'hello'
     return 'hello'
if __name__ == "__main__":
    app.run(host='0.0.0.0')
</syntaxhighlight>
==예제 2==
<syntaxhighlight lang='python'>
from flask import Flask
from flask import request
application = app = Flask(__name__)
@app.after_request
def after_request(response):
    app.logger.error('[%s] %s %s %s %s %s', response.status, request.method, request.scheme, request.remote_addr, request.full_path, request.get_data())
    return response
if __name__ == "__main__":
    app.run(host='0.0.0.0')
</syntaxhighlight>
<syntaxhighlight lang='AppleScript'>
# curl localhost:5000
[2021-07-08 17:28:49,946] ERROR in app: [404 NOT FOUND] GET http 172.18.0.1 /? b''
# curl 'localhost:5000/foo/bar?a=1&b=2'
[2021-07-08 17:30:15,794] ERROR in app: [404 NOT FOUND] GET http 172.18.0.1 /foo/bar?a=1&b=2 b''
# curl -X POST 'localhost:5000/foo/bar?a=1&b=2' -d '{"hello":"world"}'
[2021-07-08 17:31:08,106] ERROR in app: [404 NOT FOUND] POST http 172.18.0.1 /foo/bar?a=1&b=2 b'{"hello":"world"}'
</syntaxhighlight>
==예제 3==
<syntaxhighlight lang='python'>
from flask import Flask
from flask import request
application = app = Flask(__name__)
@app.after_request
def after_request(response):
    app.logger.error('[%s] %s %s %s %s %s', response.status, request.method, request.scheme, request.remote_addr, request.full_path, request.get_data())
    return response
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'])
def catch_all(path):
    return 'OK'


if __name__ == "__main__":
if __name__ == "__main__":
26번째 줄: 65번째 줄:
==같이 보기==
==같이 보기==
* [[Flask]]
* [[Flask]]
==참고==
* https://flask.palletsprojects.com/en/2.0.x/patterns/singlepageapplications/
* https://stackoverflow.com/questions/16611965/allow-all-method-types-in-flask-route
* https://gist.github.com/alexaleluia12/e40f1dfa4ce598c2e958611f67d28966


[[분류: Flask]]
[[분류: Flask]]

2021년 7월 9일 (금) 11:10 기준 최신판

1 개요[ | ]

Flask 모든 request 로깅 예제
Flask 모든 method, path, data 로깅 예제

2 예제 1[ | ]

  • 환경변수 FLASK_ENV=development
from flask import Flask
from flask import request
application = app = Flask(__name__)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'])
def catch_all(path):
    app.logger.debug('[%s][%s][%s]', request.method, path, request.get_data())
    return 'hello'

if __name__ == "__main__":
    app.run(host='0.0.0.0')

3 예제 2[ | ]

from flask import Flask
from flask import request
application = app = Flask(__name__)

@app.after_request
def after_request(response):
    app.logger.error('[%s] %s %s %s %s %s', response.status, request.method, request.scheme, request.remote_addr, request.full_path, request.get_data())
    return response

if __name__ == "__main__":
    app.run(host='0.0.0.0')
# curl localhost:5000
[2021-07-08 17:28:49,946] ERROR in app: [404 NOT FOUND] GET http 172.18.0.1 /? b''
# curl 'localhost:5000/foo/bar?a=1&b=2'
[2021-07-08 17:30:15,794] ERROR in app: [404 NOT FOUND] GET http 172.18.0.1 /foo/bar?a=1&b=2 b''
# curl -X POST 'localhost:5000/foo/bar?a=1&b=2' -d '{"hello":"world"}'
[2021-07-08 17:31:08,106] ERROR in app: [404 NOT FOUND] POST http 172.18.0.1 /foo/bar?a=1&b=2 b'{"hello":"world"}'

4 예제 3[ | ]

from flask import Flask
from flask import request
application = app = Flask(__name__)

@app.after_request
def after_request(response):
    app.logger.error('[%s] %s %s %s %s %s', response.status, request.method, request.scheme, request.remote_addr, request.full_path, request.get_data())
    return response

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'])
def catch_all(path):
    return 'OK'

if __name__ == "__main__":
    app.run(host='0.0.0.0')

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}