[python] logging 모듈 사용하기
logging 모듈
logging 모듈은 파이썬 기본 내장 라이브러리로
별도의 설치없이 바로 사용 가능합니다.
파일을 만들어 다음과 같이 log를 셋팅해 줍니다.
설명 ▼
import logging
def get_logger(name=None):
logger = logging.getLogger(name)
logging 모듈을 import해주고
logger 인스턴스를 생성합니다.
logger.setLevel(logging.DEBUG)
logger의 level을 설정합니다.
LEVEL | 설명 |
DEBUG | 간단히 문제를 진단하고 싶을 때, 자세한 정보를 기록 |
INFO | 계획대로 작동하는지에 대한 확인 |
WARNING(기본) | 소프트웨어는 예상대로 작동하고 있지만, 예상치 못한 일의 발생 |
ERROR | 중대한 문제로 인해 소프트웨어가 일부 기능을 수행하지 못함 |
CRITICAL | 작동이 불가능한 수준의 심각한 에러 발생 |
setLevel()메서드로 level을 설정해주지 않으면
기본값인 warning이 적용됩니다.
formatter = logging.Formatter("%(asctime)s - %(levelname)s - [%(funcName)s:%(lineno)d] - %(message)s")
formatter를 설정하여
다양한 속성을 이용해
원하는 데이터를 출력할 수 있습니다.
속성 | format | 설명 |
asctime | %(asctime)s | 시간 정보 |
created | %(created)f | logRecord가 만들어진 시간 |
filename | %(filename)s | pathname의 파일명 부분 |
funcName | %(funcName)s | log가 기록된 함수 |
levelname | %(levelname)s | logging level |
lineno | %(lineno)d | log가 기록된 line |
module | %(module)s | 모듈 (filename의 이름 부분) |
message | %(message)s | 로그된 메시지 |
name | %(name)s | logger의 이름 |
pathname | %(pathname)s | 로깅 호출이 일어난 소스 파일의 전체 경로명 |
thread | %(thread)d | 스레드 ID |
threadName | %(threadName)s | 스레드 이름 |
console = logging.StreamHandler()
file_handler_debug = logging.FileHandler(filename="log_debug.log")
file_handler_info = logging.FileHandler(filename="log_info.log")
handler instance 생성하여 console 및 파일로 저장할 수 있도록 합니다.
StreamHandler() : 콘솔 출력
FileHandler() : 파일 출력
(FileHandler에 로그를 생성할 디렉토리+파일을 설정
파일이 없을 시 : 파일이 생성되면서 로그가 출력
파일이 있을 시 : 기존 파일에 이어서 로그가 출력)
console.setLevel(logging.INFO)
file_handler_debug.setLevel(logging.DEBUG)
file_handler_info.setLevel(logging.INFO)
console 레벨을 INFO로 설정했습니다.
(터미널에 출력되는 로그정보입니다.)
console.setFormatter(formatter)
file_handler_debug.setFormatter(formatter)
file_handler_info.setFormatter(formatter)
handler 출력을
지정한 formatter 형식으로 나오게 합니다.
logger.addHandler(console)
logger.addHandler(file_handler_debug)
logger.addHandler(file_handler_info)
logger에 handler를 추가합니다.
이제 셋팅된 log를 실행하기 위해
test 코드를 작성후 실행해 보도록 하겠습니다.
셋팅한 log파일을 import한 다음
함수를 호출하고 test라는 이름의 log인스턴스를 생성합니다.
INFO와 DEBUG를 출력하는 함수 지정 후 실행합니다.
test파일을 실행하면 콘솔창에 INFO가 출력되는 것을 확인할 수 있습니다.
(console 레벨을 'INFO'로 셋팅했기 때문에
콘솔 창에 하위 level인 DEBUG는 출력되지 않습니다.)
폴더안에
filehandler로 작성했던
log 파일 2개가 생성된 것을 확인할 수 있습니다.
설정한 formatter 형식으로 저장된 것을 확인할 수 있습니다.
출처 : [python] logging 이용하여 log 쉽게 남기기
[python] Logging 모듈로 로그 남기기