728x90
1. stream에 로그 남기기
import logging
logging.info('my INFO log')
logging.warning('my WARNING log')
# WARNING:root:my WARNING log
위 코드를 실행하면 warning level만 출력되는 이유는? logging의 default log level이 warning으로 되어있기 때문이다.
다음처럼 logging의 basicConfig level을 변경하면 된다. 모든 log를 출력하고자 할 때는 level을 debug로 지정한다.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.info('my INFO log')
logging.warning('my WARNING log')
# INFO:root:my INFO log
# WARNING:root:my WARNING log
2. file에 로그 남기기
- basicConfig의 filename을 설정하면 해당 위치에 로그 파일이 생성된다.
- 해당 파일을 열어보면 log가 append 되는 것을 확인할 수 있다(내용이 덮어 씌워지는 것이 아니라, 기존 로그에 이어서 로그가 누적된다).
import logging
logging.basicConfig(filename='./server.log', level=logging.DEBUG)
logging.info('my INFO log')
logging.warning('my WARNING log')
# INFO:root:my INFO log
# WARNING:root:my WARNING log
3. stream과 file에 동시에 로그 남기기
- logging.getLogger(__name__)으로 logger instance를 생성한다.
- stream과 file에 로그를 남기는 handler를 생성한다.
- logger instance에 stream과 file handler를 설정한다.
- logger instance로 log를 찍는다.
import logging
import logging.handlers
# logger 인스턴스를 생성 및 로그 레벨 설정
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# fileHandler와 StreamHandler를 생성
fileHandler = logging.FileHandler('./server.log')
streamHandler = logging.StreamHandler()
# Handler를 logging에 추가
logger.addHandler(fileHandler)
logger.addHandler(streamHandler)
# logging
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
로그 형식(formatting)
- formmater 생성 후, handler에 formmater 세팅
import logging
import logging.handlers
# logger 인스턴스를 생성 및 로그 레벨 설정
logger = logging.getLogger("crumbs")
logger.setLevel(logging.DEBUG)
# formmater 생성
formatter = logging.Formatter('[%(levelname)s|%(filename)s:%(lineno)s] %(asctime)s > %(message)s')
# fileHandler와 StreamHandler를 생성
fileHandler = logging.FileHandler('./log/my.log')
streamHandler = logging.StreamHandler()
# handler에 fommater 세팅
fileHandler.setFormatter(formatter)
streamHandler.setFormatter(formatter)
# Handler를 logging에 추가
logger.addHandler(fileHandler)
logger.addHandler(streamHandler)
# logging
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
'''
출력결과
[DEBUG|input.py:24] 2016-05-20 10:37:06,656 > debug
[INFO|input.py:25] 2016-05-20 10:37:06,657 > info
[WARNING|input.py:26] 2016-05-20 10:37:06,657 > warning
[ERROR|input.py:27] 2016-05-20 10:37:06,657 > error
[CRITICAL|input.py:28] 2016-05-20 10:37:06,657 > critical
'''
파일이 너무 큰 경우 자동으로 새로운 파일을 생성하기
# file max size를 10MB로 설정
file_max_bytes = 10 * 1024 * 1024
#fileHandler = logging.handlers.RotatingFileHandler(filename='./log/test.log', maxBytes=file_max_bytes, backupCount=10)
[출처]
https://inma.tistory.com/136
https://ourcstory.tistory.com/97
https://hamait.tistory.com/880 - 로깅의 모든것
https://jusths.tistory.com/1
https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=wideeyed&logNo=221536682475
728x90
'Python' 카테고리의 다른 글
PyPy로 성능 향상시키기 (0) | 2023.04.24 |
---|---|
코드 실행시간 측정 (0) | 2023.04.24 |
상위, 하위, 동일 폴더 내 모듈 from, import 하기 (0) | 2023.04.24 |
특정기간 지난 파일 삭제 (0) | 2023.04.24 |
사전(dict) (0) | 2023.04.24 |