본문 바로가기
Language/Python

로그 핸들러 추가 방법

by Wikinist 2023. 7. 20.

먼저, 클래스 내부에서 로거를 생성하고 파일 핸들러를 추가하는 방법입니다.

import logging

class MyClass:
    def __init__(self):
        self.logger = logging.getLogger('MyClass')
        self.logger.setLevel(logging.DEBUG)

        log_file = 'my_class.log'
        file_handler = logging.FileHandler(log_file)
        file_handler.setLevel(logging.DEBUG)

        log_format = '%(asctime)s - %(levelname)s - %(message)s'
        date_format = '%Y-%m-%d %H:%M:%S'
        formatter = logging.Formatter(log_format, date_format)

        file_handler.setFormatter(formatter)
        self.logger.addHandler(file_handler)

    def some_method(self):
        self.logger.debug('This is a debug message from MyClass.')

그리고 main 문에서 해당 클래스를 인스턴스화한 뒤, 해당 인스턴스의 로거를 가져와서 추가할 파일 핸들러를 설정하는 방법입니다.

if __name__ == '__main__':
    my_instance = MyClass()

    main_log_file = 'main_log.log'
    main_file_handler = logging.FileHandler(main_log_file)
    main_file_handler.setLevel(logging.DEBUG)

    main_log_format = '%(asctime)s - %(levelname)s - %(message)s'
    main_date_format = '%Y-%m-%d %H:%M:%S'
    main_formatter = logging.Formatter(main_log_format, main_date_format)

    main_file_handler.setFormatter(main_formatter)

    my_instance.logger.addHandler(main_file_handler)

    my_instance.some_method()
    my_instance.logger.debug('This is a debug message from the main code.')

위의 코드에서 MyClass 클래스 내부에서 로거를 생성하고 파일 핸들러를 추가하였습니다. 그리고 main 문에서 MyClass를 인스턴스화한 뒤, 해당 인스턴스의 로거를 가져와서 추가로 파일 핸들러를 설정했습니다. 이렇게 하면 MyClass에서 로깅한 메시지와 main 코드에서 로깅한 메시지가 서로 다른 파일 핸들러에 의해 각각 다른 파일로 저장됩니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

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

파이썬 로깅 포맷 문자열  (0) 2023.07.23
로그에 클래스이름 출력하기  (0) 2023.07.23
Log handler  (0) 2023.07.20
파이썬 로그 설정  (0) 2023.07.20
객체 생성 시, 패러미터 검사  (0) 2023.07.20