[Python] 로깅 클래스 추가

2023. 4. 3. 16:52·Study/Python

역시 무슨 일이 벌어지는지 알기 위해선 필요한 로그를 남겨놔야 한다.

간단한 로깅 클래스를 만들고 봇의 로깅이 필요한 곳에 추가했다.

 

1. 부가 클래스 작성

 

class types(Enum):
    INFO = 1
    ERROR = 2
    DEBUG = 3
    UNKNOWN = 4

class Colors:
    BLACK = '[\033[30m'
    RED = '[\033[31m'
    GREEN = '[\033[32m'
    YELLOW = '[\033[33m'
    BLUE = '[\033[34m'
    MAGENTA = '[\033[35m'
    CYAN = '[\033[36m'
    WHITE = '[\033[37m'
    UNDERLINE = '[\033[4m'
    RESET = '\033[0m]'

 

먼저 enum클래스와 컬러링을 위한 Colors 클래스를 만들었다.

색상 지정은 아래의 이미지에 나와있는 대로 ANSI 표준을 참고해 지정하면 된다. [각주:1]

 

 

 

\033[ 으로 시작하는 문자열은 ANSI의 이스케이프 시퀀스를 따르는 예약문자이다.

이에 관한 설명은 여기에서 확인할 수 있다. [각주:2]

 

 

2. 로깅 클래스 작성

 

class Logger:

    #Loggin function
    def writeLog(lTypes, content):

        # Set Korean Timezone
        KST = timezone('Asia/Seoul')

        today = datetime.now()
        today = today.astimezone(KST)

        lt = None

        # Coloring strings
        if(lTypes == types.INFO.value):
            lt = Colors.BLUE + types.INFO.name + Colors.RESET
        elif(lTypes == types.ERROR.value):
            lt = Colors.RED + types.ERROR.name + Colors.RESET
        elif(lTypes == types.DEBUG.value):
            lt = Colors.GREEN + types.DEBUG.name + Colors.RESET
        elif(lTypes == types.UNKNOWN.value):
            lt = Colors.YELLOW + types.UNKNOWN.name + Colors.RESET

        # Print log on terminal
        print(f'[{today}]', end="    ")
        print('{type:<19} {str}'.format(type = lt, str = content))

 

내가 봇을 올려둔 클라우드는 UTC로 시간을 표현하기 때문에 이를 한국 시간에 맞춰 표현할 수 있게 해야 했다.

로깅 타입에 따라 다른 색상을 사용해 표현하고, 구분감을 위해 적당히 빈칸도 넣어줬다.

파이썬은 switch문이 없더라... 「if ... elif」로 다 작성했다.

공식에서도 이걸 권장하는 듯 하다

 

 

3. 로깅 확인

색깔도 잘 나온다

시간대 출력, 로그 구분, 색상, 정렬 모든 게 만족스럽게 잘 된다.

enum 관련해서 if문 돌리는 쪽은 내가 너무 무식한 방식으로 만든 것 같긴 한데...

일단은 이만 하면 충분한 듯하다.

 


Reference

  1. Python 출력 text의 color를 변경해 보자 [본문으로]
  2. [Python] 파이썬 출력 문자 색상 변경하기(python print text color change)  [본문으로]

'Study > Python' 카테고리의 다른 글

[Python / GPT] 봇 코드 리팩터링  (0) 2023.05.17
[Python, AWS] csv에서 DynamoDB에로의 교체  (0) 2023.05.10
[Python] 봇에 Epoch Converter 추가  (0) 2023.03.29
[Python] 디스코드 봇에 환율 확인 기능 추가  (0) 2023.02.12
[Python] 봇의 명령어 실행 결과를 csv 형식으로 저장하기  (0) 2023.01.22
'Study/Python' 카테고리의 다른 글
  • [Python / GPT] 봇 코드 리팩터링
  • [Python, AWS] csv에서 DynamoDB에로의 교체
  • [Python] 봇에 Epoch Converter 추가
  • [Python] 디스코드 봇에 환율 확인 기능 추가
BVM
BVM
  • BVM
    E:\
    BVM
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Thoughts (14)
      • Study (69)
        • Japanese (3)
        • C++ & C# (46)
        • Javascript (3)
        • Python (14)
        • Others (3)
      • Play (1)
        • Battlefield (1)
      • Others (11)
      • Camp (73)
        • T.I.L. (57)
        • Temp (1)
        • Standard (10)
        • Challenge (3)
        • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 본 블로그 개설의 목적
  • 인기 글

  • 태그

    로깅
    Selenium
    bot
    FF14
    7계층
    스타필드
    Asio
    프로그래머스
    OSI
    discord
    네트워크
    Python
    c#
    boost
    클라우드
    db
    docker
    Network
    cloudtype
    JS
    C++
    네트워크 프로그래밍
    베데스다
    IOCP
    암호화
    서버
    Server
    discord py
    Dalamud
    포인터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
BVM
[Python] 로깅 클래스 추가
상단으로

티스토리툴바