import sys import os import logging from logging.handlers import RotatingFileHandler # UTF-8 인코딩 강제 설정 (Windows cp949 오류 방지) if sys.platform == 'win32': sys.stdout.reconfigure(encoding='utf-8') sys.stderr.reconfigure(encoding='utf-8') from app import create_app app = create_app() # 로깅 설정 if not app.debug: # 프로덕션 환경에서는 파일로 로깅 if not os.path.exists('logs'): os.mkdir('logs') file_handler = RotatingFileHandler('logs/server.log', maxBytes=10240000, backupCount=10) file_handler.setFormatter(logging.Formatter( '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]' )) file_handler.setLevel(logging.INFO) app.logger.addHandler(file_handler) app.logger.setLevel(logging.INFO) app.logger.info('서버 시작') # 디버그 모드에서도 콘솔에 모든 로그 출력 logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(sys.stdout) ] ) if __name__ == '__main__': try: print(f"[{__name__}] 서버 시작: http://0.0.0.0:5001") print(f"[{__name__}] 로그는 콘솔과 logs/server.log 파일에 기록됩니다.") app.run(host='0.0.0.0', port=5001, debug=True, use_reloader=False) except Exception as e: print(f"서버 시작 오류: {e}") import traceback traceback.print_exc()