본문 바로가기

Language/Python24

루트로거, 차일드로거 로깅 모듈에서는 루트 로거를 기준으로 차일드 로거를 확인할 수 있습니다. 루트 로거는 기본 로거로 모든 로그 메시지를 처리하는 로거이며, 다른 로거들은 루트 로거를 기준으로 차일드 로거가 됩니다. 파이썬 logging 모듈의 logging.getLogger() 함수로 로거를 생성할 때, 로거의 이름을 지정하면 해당 이름의 로거가 생성되고, 이름을 지정하지 않으면 기본 로거인 루트 로거가 생성됩니다. 루트 로거를 기준으로 차일드 로거를 확인하는 방법은 다음과 같습니다: import logging # 루트 로거를 얻어옵니다. root_logger = logging.getLogger() # 루트 로거의 차일드 로거 목록을 확인합니다. child_loggers = root_logger.manager.logger.. 2023. 7. 23.
파이썬 로깅 포맷 문자열 파이썬에서 로깅 포맷 문자열을 지정하는 데 사용되는 주요 문자열들은 다음과 같습니다. %(asctime)s: 로그 메시지가 기록된 시간을 나타냅니다. %(levelname)s: 로그 메시지의 레벨을 나타냅니다 (DEBUG, INFO, WARNING, ERROR, CRITICAL). %(name)s: 로거의 이름을 나타냅니다. %(message)s: 실제 로그 메시지를 나타냅니다. %(pathname)s: 로그를 호출한 파일의 전체 경로를 나타냅니다. %(filename)s: 로그를 호출한 파일의 파일명만을 나타냅니다. %(module)s: 로그를 호출한 파일의 모듈 이름을 나타냅니다. %(lineno)d: 로그를 호출한 파일에서의 라인 번호를 나타냅니다. %(funcName)s: 로그를 호출한 함수의 이.. 2023. 7. 23.
로그에 클래스이름 출력하기 클래스 이름을 직접 문자열로 쓰지 않고서도 로그 메시지에 클래스 이름을 나타내는 방법은 logging.Logger 클래스의 getChild() 메서드를 사용하는 것입니다. 이를 통해 자식 로거를 생성하고, 이 자식 로거에 클래스 이름을 전달하여 로그 메시지를 출력할 수 있습니다. 다음은 getChild() 메서드를 사용하여 클래스 이름을 로그 메시지에 포함하는 방법을 보여주는 예제 코드입니다. import logging # 전역 로그 설정 logging.basicConfig(level=logging.DEBUG) # 커스텀 포매터 정의 class CustomFormatter(logging.Formatter): def format(self, record): # 클래스 이름과 위치 정보를 추가하여 로그 메시지.. 2023. 7. 23.
로그 핸들러 추가 방법 먼저, 클래스 내부에서 로거를 생성하고 파일 핸들러를 추가하는 방법입니다. 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.Formatte.. 2023. 7. 20.
Log handler 파이썬의 logging 모듈은 다양한 로그 핸들러를 제공하여 로그를 다양한 대상으로 출력할 수 있습니다. 주요 로그 핸들러들과 각각의 역할에 대해 설명하겠습니다. StreamHandler (스트림 핸들러) 로그를 스트림으로 출력하는 핸들러입니다. 스트림은 콘솔(Console)과 같은 출력 장치를 의미합니다. 주로 개발 중에 로그를 확인하는 용도로 사용됩니다. logging.StreamHandler 클래스를 사용하여 생성하며, 기본적으로 콘솔에 로그를 출력합니다. FileHandler (파일 핸들러) 로그를 파일로 출력하는 핸들러입니다. 로그를 파일에 기록하여 보관하거나 분석하는 용도로 사용됩니다. logging.FileHandler 클래스를 사용하여 생성하며, 지정한 파일에 로그를 기록합니다. Rotat.. 2023. 7. 20.
파이썬 로그 설정 import logging # 로그 파일 경로 log_file = 'app.log' # 로그 포맷 설정 log_format = '%(asctime)s - %(levelname)s - %(message)s' date_format = '%Y-%m-%d %H:%M:%S' # 로그 레벨 설정 (DEBUG, INFO, WARNING, ERROR, CRITICAL) log_level = logging.DEBUG # 로거 설정 logging.basicConfig(filename=log_file, level=log_level, format=log_format, datefmt=date_format) # 로그 메시지 출력 logging.debug('This is a debug message.') logging.info('.. 2023. 7. 20.
객체 생성 시, 패러미터 검사 파이썬에서 객체를 생성할 때, 생성자(__init__ 메서드)의 파라미터 타입을 검사하여 타입이 일치하지 않는 경우 객체 생성을 막을 수 있습니다. 이를 위해 다음과 같은 방법을 활용할 수 있습니다. 타입 어노테이션(Type Annotation) 활용 파이썬 3.5 이상에서는 타입 어노테이션을 사용하여 파라미터의 타입을 명시할 수 있습니다. typing 모듈을 활용하여 타입을 정의하고, isinstance() 함수를 사용하여 타입을 확인할 수 있습니다. from typing import Optional class MyClass: def __init__(self, param1: str, param2: Optional[int]): if not isinstance(param1, str) or not isins.. 2023. 7. 20.
클래스 변수 선언 시 _와 __의 차이 파이썬에서 클래스 변수를 선언할 때 _ 한 개와 _ 두 개의 차이가 있습니다. _ 한 개 (단일 언더스코어): _variable과 같이 변수 이름 앞에 언더스코어 한 개를 붙여 선언합니다. 이는 변수를 "내부 변수" 또는 "보호 변수"로 표시하는 관례적인 표기 방법입니다. 클래스 내부에서는 사용되지만, 클래스 외부에서 접근할 때에는 해당 변수에 직접 접근하지 않는 것이 바람직합니다. 다른 개발자에게 해당 변수가 내부적으로 사용되는 것임을 알리고, 변수에 대한 직접 접근을 억제하는 역할을 합니다. 하지만 파이썬에서는 실제로 해당 변수에 대한 접근 제한이나 강제를 적용하지 않으므로, 관례적인 규칙으로써 사용됩니다. _ 두 개 (이중 언더스코어): __variable과 같이 변수 이름 앞에 언더스코어 두 개를.. 2023. 7. 19.
DTO DTO(Data Transfer Object) 클래스는 데이터 전송을 위한 객체로, 데이터를 보관하고 전송하는 데 사용됩니다. 일반적으로 속성(attribute)만을 가지며, getter와 setter 메서드를 제공합니다. 이를 통해 데이터의 캡슐화와 유효성 검사 등을 수행할 수 있습니다. 아래는 Python에서 DTO 클래스를 정의하는 예제입니다. Copy code class UserDTO: def __init__(self, username, email, age): self._username = username self._email = email self._age = age @property def username(self): return self._username @username.setter def.. 2023. 7. 19.