[Python] Flask logging 하는 방법

2021. 4. 28. 01:54 Python/Python 프로그래밍

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")

 

출처 : ourcstory.tistory.com/230?category=630693