Flask를 사용하여 오류 기록

Salman Mehmood 2024년2월15일
Flask를 사용하여 오류 기록

이 설명과 함께 오류 처리, 특히 오류 로깅에 대해 배웁니다. 이 문서를 마치면 파일에 오류를 기록하는 방법과 Flask에서 오류를 기록하는 다른 방법을 확인하기 위해 어디로 가야 하는지 알게 될 것입니다.

Flask의 로깅 모듈을 사용하여 오류 기록

일반적으로 프로덕션 앱은 디버그 모드에 있지 않으므로 로깅 모듈을 사용할 수 있는 유일한 방법은 오류가 있음을 아는 것입니다. 이 경우 파일로 전송되므로 나중에 보고 디버깅하고 문제를 해결할 수 있습니다.

이것은 기본적으로 활성화되어 있지 않습니다. Flask 앱에 로깅 기능을 추가해야 합니다. 그렇기 때문에 디버그 모드가 아닌 실행 중인 정말 기본적인 Flask 앱을 보여드리겠습니다.

from flask import Flask

app = Flask(__name__)


@app.route("/")
def Error_Los():
    return "The page without error"


if __name__ == "__main__":
    app.run()

가장 먼저 사용할 것은 logging 모듈입니다. 이것을 가져와야 합니다. 내장된 Python 모듈이므로 Python 3를 사용하는 경우 설치할 필요가 없습니다.

logging 모듈에서 FileHandlerWARNING이라는 두 가지 항목을 가져옵니다.

FileHandler는 오류를 파일에 기록하는 방법입니다. ‘WARNING’은 로그를 트리거하려는 수준입니다. 더 심각한 오류와 같은 것일 수 있습니다.

하지만 원하는 만큼 로그할 수 있기 때문에 파일에 로그인할 때 경고를 표시하는 것이 좋습니다.

from logging import FileHandler, WARNING

이제 FileHandler를 인스턴스화해야 하며 오류가 저장될 파일 이름을 전달해야 합니다.

F_H = FileHandler("errorlogs.txt")

이제 setLevel()을 사용하여 파일 처리기의 수준을 설정해야 합니다. 파일 FileHandler 클래스의 메서드이므로 logging 모듈에서 가져온 WARNING 수준을 전달합니다.

이제 Flask 앱에 로거를 사용한 다음 addHandler를 사용해야 합니다. 그 안에는 위에서 만든 파일 처리기 개체가 있습니다.

F_H.setLevel(WARNING)
app.logger.addHandler(F_H)

이 앱을 실행하면 errorlogs.txt 파일이 생성됩니다. 한 가지 유의해야 할 점은 찾고 있는 오류 유형이 아니기 때문에 응용 프로그램만 기록하고 HTTP 오류는 기록하지 않는다는 것입니다. 응용 프로그램이 아닙니다.

Flask 로깅 - 출력 1

이제 1/0을 반환하려고 시도하지만 실패합니다. 서버를 다시 실행하고 페이지를 다시 시작합니다.

HTTP가 가리킬 수 없는 일부 오류를 의미하는 내부 서버 오류가 발생하지만 로그 파일을 보면 오류 세부 정보를 볼 수 있습니다.

def Error_Los():
    return 1 / 0

출력:

Flask 로깅 - 출력 2

오류 로깅을 위한 다른 핸들러에 대해 자세히 알아보려면 여기에서 공식 문서를 방문하세요.

완전한 Python 코드:

from flask import Flask
from logging import FileHandler, WARNING

app = Flask(__name__)
F_H = FileHandler("errorlogs.txt")
F_H.setLevel(WARNING)
app.logger.addHandler(F_H)


@app.route("/")
def Error_Los():
    return 1 / 0


if __name__ == "__main__":
    app.run()
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn