-
[Logging] 메인 코드와 모듈에서 동일 로그 파일 사용python/기능개발을 위한 지식 2025. 4. 1. 11:37
파이썬에서 로그를 남기는 방법을 정리했습니다. 메인 코드에서 로그를 설정하고, 다른 모듈 파일에서도 동일한 로그 파일에 기록되도록 하는 데 초점을 맞췄습니다.
1. 메인 코드에서 로그 설정
로그는 logging 모듈을 사용해 설정합니다. 메인 파일에서 로그 레벨, 포맷, 파일 핸들러를 정의합니다.
import logging from datetime import datetime # 로깅 기본 설정 logging.basicConfig( level=logging.INFO, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%Y/%m/%d %I:%M:%S' ) # 루트 로거 가져오기 logger = logging.getLogger() # 파일 핸들러 추가 log_filename = f"{datetime.now().strftime('%Y%m%d')}.log" file_handler = logging.FileHandler(log_filename) file_handler.setFormatter( logging.Formatter('%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%Y/%m/%d %I:%M:%S') ) logger.addHandler(file_handler) # 테스트 로그 logger.info("로그 설정 완료")
설명:
- logging.basicConfig: 콘솔 출력용 기본 설정.
- FileHandler: 지정한 파일에 로그 기록.
- 루트 로거에 핸들러를 추가해 모든 모듈에서 동일한 설정 사용 가능.
main.py 코드 실행시 생성된 로그 파일 2. 모듈 파일에서 로그 사용
다른 모듈에서 별도 설정 없이 루트 로거를 가져와 사용합니다.
# module.py import logging logger = logging.getLogger(__name__) def some_function(): logger.debug("디버그 메시지") logger.info("정보 메시지") logger.error("에러 메시지")
main.py 수정
import logging from datetime import datetime from module import some_function # 로깅 기본 설정 logging.basicConfig( level=logging.INFO, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%Y/%m/%d %I:%M:%S' ) # 루트 로거 가져오기 logger = logging.getLogger() # 파일 핸들러 추가 log_filename = f"{datetime.now().strftime('%Y%m%d')}.log" file_handler = logging.FileHandler(log_filename) file_handler.setFormatter( logging.Formatter('%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%Y/%m/%d %I:%M:%S') ) logger.addHandler(file_handler) # 테스트 로그 logger.info("로그 설정 완료") # module.py 파일에서 some_function 호출 some_function()
수정된 main.py 실행 후 로그 파일 3. 주의사항
- 레벨 설정: DEBUG 로그를 보고 싶으면 logging.basicConfig(level=logging.DEBUG)로 변경.
- 핸들러 중복: 모듈에서 새 핸들러를 추가하면 로그가 중복 기록될 수 있으니 피하세요.
- 파일 경로: FileHandler에 절대 경로(예: /logs/20250331.log)를 지정하면 디렉토리 미리 생성 필요.
'python > 기능개발을 위한 지식' 카테고리의 다른 글
Python 코드가 전부 한 파일에 존재한다!? (코드 분리하기) (0) 2025.04.02 [Python] 기존에 작성된 코드를 쉽게 수정하기! (상속) (0) 2025.04.01