feat: ロガークラスとエラークラスを追加

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2022-07-01 14:57:43 +09:00
parent e1acd610b0
commit f5d6e6b525
6 changed files with 73 additions and 3 deletions

View File

@ -1,5 +1,21 @@
"""
Viewセキュリティオプション付与チェック用Lambda関数のエントリーポイント
"""
from src.error.file_not_found_exception import FileNotFoundException
from src.error.madaca_exception import MeDaCaException
from src.logger.logger import MeDaCaLogger
def handler(event, context):
logger = MeDaCaLogger.get_logger()
try:
print('lambda handle')
except Exception as e:
print('exception')
logger.info('lambda handle')
raise FileNotFoundException('E-02-01', 'ファイル見つかりません')
except MeDaCaException as e:
logger.exception(f'exception: {e.error_id} {e}')
# ローカル実行用
if __name__ == '__main__':
handler({}, {})

View File

@ -0,0 +1,5 @@
from .madaca_exception import MeDaCaException
class FileNotFoundException(MeDaCaException):
pass

View File

@ -0,0 +1,7 @@
from abc import ABCMeta
class MeDaCaException(Exception, metaclass=ABCMeta):
def __init__(self, error_id: str, message) -> None:
super().__init__(message)
self.error_id = error_id

View File

@ -0,0 +1,36 @@
import datetime
import logging
from zoneinfo import ZoneInfo
from ..system_vars.constants import (DEFAULT_TIMEZONE, LOG_DATE_FORMAT,
LOG_FORMAT)
from ..system_vars.environments import LOG_LEVEL
class SingletonLogger:
# インスタンス生成
@staticmethod
def __internal_new__() -> logging.Logger:
# logger設定
formatter = logging.Formatter(
LOG_FORMAT,
LOG_DATE_FORMAT
)
formatter.converter = lambda: datetime.datetime.now(ZoneInfo(DEFAULT_TIMEZONE)).timetuple()
level = logging.getLevelName(LOG_LEVEL)
logging.basicConfig(level=level, format=LOG_FORMAT, datefmt=LOG_DATE_FORMAT)
# logger.setLevel(level)
logger = logging.getLogger()
return logger
class MeDaCaLogger:
__unique_instance: logging.Logger = None
@staticmethod
def get_logger():
# インスタンス未生成の場合、唯一のインスタンスを生成する
if not MeDaCaLogger.__unique_instance:
MeDaCaLogger.__unique_instance = SingletonLogger.__internal_new__()
return MeDaCaLogger.__unique_instance

View File

@ -0,0 +1,3 @@
LOG_FORMAT = '[%(levelname)s]\t%(asctime)s\t%(message)s\n'
LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
DEFAULT_TIMEZONE = "Asia/Tokyo"

View File

@ -0,0 +1,3 @@
import os
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')