• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

flask 다양한 기능: 로그 다루기에 강의 오류가 아닐까 합니다.

21.12.03 15:19 작성 조회수 136

0

- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)
- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다
- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
flask 다양한 기능: 로그 다루기 11분 6초
강의 내용에 일부 오류가 있어요.
```
if not app.debug:
```
구문이 `if __name__ == '__main__' 보다 먼저 실행됩니다.
때문에 app.debug 는 False 인 상태가 되고 해당 구문은 실행되서 log handler 를 설정하게 됩니다. 그래서 파일이 만들어집니다.
 
설명하신 것처럼 작동하려면 if not app.debug 이하의 설정문장들이 메인 문장 안에 들어가야 합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요.

영상을 찍을 때에는 영상과 같이, 설명드린 그대로 동작한 것으로 이해가 되기도 하더라고요.

그런데, 말씀하신대로, 지금에서 테스트를 해보니, 이슈가 있는 것으로 확인이 되었습니다. 이를 처리하는 코드는 다양하게 만들 수 있지만, 다음과 같이 가이드를 드리는 것이 가장 선명하게 코드를 작성할 수 있는 부분 같아서, 다음과 같이 관련 자료를 모두 업데이트하였습니다.

어차피 다음과 같은 코드는 로깅을 테스트하기 위해, 최대한 간결한 형태로 구성한 것인데, app.run() 에 적용을 하는 debug 옵션은 app.run() 이후 코드에 적용이 되는 상황인데, app.run() 이후 코드는 flask app 이 동작을 멈춰야 실행이 되는 상황이라서, 복잡한 코드가 아닌 단순 테스트를 위한 코드를 위해서는, __main__ 내부에 넣기보다는, 위와 같이 간결하게 별도 옵션으로 인지하여,  설정을 하는 것이 더 합리적으로 보입니다.

app = Flask(__name__)

# 2021.12.06 업데이트
# 최근에는 app.debug 값을 app.run 에서 설정하기 전에, 미리 설정해주어야, 하단부 if not app.debug 에 설정이
# 적용되는 것을 확인하였습니다. 따라서, app.debug 값을 미리 설정해주는 코드를 추가하였습니다
# 즉, app.run 에서의 debug 옵션과, app.debug 값을 기반으로 한 logging 설정은 분리된 설정으로 이해하시면 좋을 것 같습니다
app.debug = False

if not app.debug:
import logging
from logging.handlers import RotatingFileHandler # logging 핸들러 이름을 적어줌
file_handler = RotatingFileHandler(
'dave_server.log', maxBytes=2000, backupCount=10)
file_handler.setLevel(logging.WARNING) # 어느 단계까지 로깅을 할지를 적어줌
# app.logger.addHandler() 에 등록시켜줘야 app.logger 로 사용 가능
app.logger.addHandler(file_handler)