01.Flask 기초 - flask 에러 다루기

ID짱재·2021년 4월 23일
0

Flask

목록 보기
5/8
post-thumbnail

🌈 flask 에러 다루기

🔥 에러 다루기 : errorhandlet()

🔥 logging 라이브러리


1.에러 다루기 : errorhandlet()

  • errorhandler를 사용하여 HTTP 오류 코드가 나오는 페이지를 다룰 수 있음
  • return 의 두번째 인자로 에러코드를 넘겨주지 않으면 200 성공으로 인지하기 때문에 두번째 인자에 에러코드(숫자)를 넣어줘야 함
  • return으로 다른 페이지를 보여줄 수도 있고, 바로 에러코드를 html로 작성해 줌으로써, 화면에 에러가 발생함을 알려줄 수 있음
  • 🔍 @app.errorhandlet(에러코드)

✍🏻 python

from flask import Flask
import requests
app = Flask(__name__)
# error 다루는 방법
@app.errorhandler(404)
def page_not_found(error): # 파라미터로 에러코드를 함수내로 전달
    return "<h1>404 Error</h1>", 404 # 두번째 인자로 에러코드를 넘겨줘야 함
if __name__ == "__main__":
    app.run(host="0.0.0.0", port="8080")


2. logging 라이브러리

  • 서버는 24시간 동작하므로, 문제가 있을 때, 어떤 문제가 있었는지, 파악하기 위해 로깅 기능을 사용함
  • 사용자 모니터링, 해킹 확인등 다양한 상용화시 문제에 대해서도 로깅 기능을 활용할 수 있음
  • python에는 로그를 다루는 logging 라이브러리가 있기 때문에 손쉽게 사용할 수 있고, 로그 정보는 로그 레벨에 따라 출력을 제한할 수 있음
  • 로그 레벨은 5단계로 나눔 : DEBUG > INFO > WARNING > ERROR > Critical
  • Critical로 갈수록 심각한 문제에 대한 정보로 판단하면 됨
  • 모든 로깅 정보를 계속 저장하면 서버의 부하가 생길 수 있기 때문에 이를 판단해서 로깅 정보를 수집하게 함
  • 로깅 핸들러 중에서 RotatingFileHandler 를 가장 많이 사용

✍🏻 python

from flask import Flask
import requests
app = Flask(__name__)
# 로깅 설정 및 등록
if not app.debug: # app.debug가 True면 로깅하지 말고, False면 아래 로깅을 실행하라
    import logging
    from logging.handlers import RotatingFileHandler  # logging 핸들러 이름을 적어줌(RotatingFileHandler이 대표적으로 사용됨)
    file_handler = RotatingFileHandler(
        'dave_server.log', maxBytes=2000, backupCount=10) # 파일경로 및 파일명, 파일 당 최대크기, 파일 갯수
    file_handler.setLevel(logging.WARNING)  # 어느 레벨(단계)까지 로깅을 할지를 적어줌
    app.logger.addHandler(file_handler) # app.logger.addHandler() 에 등록시켜줘야 app.logger 로 사용 가능
# 에러 처리
@app.errorhandler(404)
def page_not_found(error):
    app.logger.error('이것은 중요한 에러입니다. page_not_found에서 일어났습니다.')
    return "<h1>해당 경로에 맞는 웹페이지가 없습니다.</h1>", 404
if __name__ == "__main__":
    app.run(host="0.0.0.0", port="8080", debug=False)
profile
Keep Going, Keep Coding!

1개의 댓글

comment-user-thumbnail
2022년 2월 21일

안녕하세요 잘읽었습니다.한가지 질문이 있습니다.잘실행되던 flask가 갑자기 503에러를 내보내는데 서버를 새로 시작해도 마찬가지인데 로컬에선 잘실행됩니다 혹시 ec2의 문제일까요?

답글 달기