python의 log를 s3에 업로드하기 위해 사용한 log class 입니다.
[logging class]
import logging
import io
class LogHandler:
string_io_log = io.StringIO()
@staticmethod
def get_logger(logger_name: str):
# logger 생성
logger = logging.getLogger(logger_name)
formatter = formatter = logging.Formatter("%(asctime)s %(levelname)s \t[%(filename)s:%(lineno)s - %(funcName)s()] %(message)s")
logger.setLevel(logging.INFO)
# 콘솔에 log를 찍기 위한 일반적인 stream handler 생성
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
# logger에 console_handler 추가
logger.addHandler(console_handler)
# string io를 사용한 log 생성
string_io_handler = logging.StreamHandler(string_io_log)
string_io_handler)
.setFormatter(formater)
# logger에 string_io_handler 추가
logger.addHandler(string_io_handler)
return logger
[사용]
import LogHandler
log = LogHandler.get_logger("loger_test")
log.info("log test")
S3Handler().str_log_save(LoggingHandler.string_buffer.getvalue())
LogHandler.string_buffer.truncate(0)
LogHandler.string_buffer.seek(0)
참고 : https://medium.com/nerd-for-tech/simple-aws-s3-logging-in-python3-using-boto3-cfbd345ef65b