[Python] Flask logging 하는 방법
WAS에서 logging을 남기는건 기본중에 기본, 파일로 로깅을 남기는 방법과 에러가 나면 메일을 보내주는 방식이 두가지가 있다. 참 편하게 다 해주니 너무 좋구나.
이번에는 file로 logging을 남기기로 생각했다.
디버깅을 하기 위해서는 file로 많은 정보가 있을수록 좋다.
여러개의 file_handler를 사용해서 구현하면 된다.
* FileHandler - logs messages to a file on the filesystem.
* RotatingFileHandler - logs messages to a file on the filesystem and will rotate after a certain number of messages.
* NTEventLogHandler - will log to the system event log of a Windows system. If you are deploying on a Windows box, this is what you want to use.
* SysLogHandler - sends logs to a UNIX syslog.
file_handler = TheHandlerYouWant(…)
file_handler.setLevel(logging.WARNING)
추가적으로 내가 set을 통해서 file_handler의 설정을 변경해주면 된다.
변경이 되었으면
app.logger.addHandler(file_handler)를 하면 끝
나같은 경우에는 RotatingFileHandler를 이용해서 로깅을 남길 생각이다. 로그의 양이 많아지면, 로깅을 하는데도 시간이 소요되기 때문에 전체적으로 성능을 저하시킬 수 있기 때문에, 일정 사이즈, 개수가 되었을때 파일을 쪼개주는것도 중요하다.
import logging
from logging.handlers import RotatingFileHandler
from logging import Formatter
app.config['LOGGING_LEVEL'] = logging.DEBUG
app.config['LOGGING_FORMAT'] = '%(asctime)s %(levelname)s: %(message)s in %(filename)s:%(lineno)d]'
app.config['LOGGING_LOCATION'] = 'abuse_detect_logs/'
app.config['LOGGING_FILENAME'] = 'abuse_detect.log'
app.config['LOGGING_MAX_BYTES'] = 100000
app.config['LOGGING_BACKUP_COUNT'] = 1000
# logging
if not app.debug:
log_dir = os.path.join(app.config['HOME_DIR'], app.config['LOGGING_LOCATION'])
file_util.ensure_dir_exists(log_dir)
file_handler = RotatingFileHandler(app.config['LOGGING_LOCATION'] + app.config['LOGGING_FILENAME'],
maxBytes=app.config['LOGGING_MAX_BYTES'],
backupCount=app.config['LOGGING_BACKUP_COUNT'])
file_handler.setFormatter(Formatter(app.config['LOGGING_FORMAT']))
file_handler.setLevel(app.config['LOGGING_LEVEL'])
app.logger.addHandler(file_handler)
app.logger.info("logging start")
'Python > Python 프로그래밍' 카테고리의 다른 글
파이썬 스케일이 다른 그래프 (0) | 2021.04.28 |
---|---|
파이썬 디렉토리 생성 코드 (0) | 2021.04.28 |
파이썬 데이터 읽기 (pandas) (0) | 2021.04.28 |
[Python] Flask Response Encoding 문제 (0) | 2021.04.28 |
[Python] Virtualenv 설치 및 dependencies 관리하기 (0) | 2021.04.28 |
[Python] matpltlib import 에서 발생한 에러 (0) | 2021.04.28 |
[Python] stdin, stdout, pipeline 이용해 데이터 처리하는 방법 (0) | 2021.04.28 |
파이썬으로 HTML 파싱하기 (0) | 2021.04.28 |