파이썬으로 코딩을 하다 보면 늘 로거를 새로 짰는데, 기본 패키지를 이용해 필수적인 동작을 하는 로거를 블로그에 공유해 놓는다. 이러면 그때그때 복붙하면 되겠지ㅋ

기본적으로 파일위치, 시간(ISO-8601), 레벨, 라인넘버 등등 출력이 되고, 자정마다 파일 로테이션해서 30일까지 갖고 있는다.

logger.py
from logging.handlers import TimedRotatingFileHandler
import logging
import sys

def get_logger(filename):
    logger = logging.getLogger(__name__)

    fmt = logging.Formatter(
        "%(name)s: %(asctime)s | %(levelname)s | %(filename)s:%(lineno)s | %(process)d >>> %(message)s"
    )
    stdout = logging.StreamHandler(stream=sys.stdout)
    stdout.setFormatter(fmt)
    logger.addHandler(stdout)

    fileHandler = TimedRotatingFileHandler(filename, backupCount=30, when="midnight")
    fileHandler.setFormatter(fmt)
    logger.addHandler(fileHandler)

    logger.setLevel(logging.DEBUG)
    return logger

    # Example Usage
    #logger.debug("A DEBUG message")
    #logger.info("An INFO message")
    #logger.warning("A WARNING message")
    #logger.error("An ERROR message")
    #logger.critical("A CRITICAL message")

아래와 같이 불러 쓰면,

app.py
from logger import get_logger

logger = get_logger("app.log")

value=10
st="test"
logger.info("Value : %d, String : %s",value, str(st))
logger.warning("Warning")

이렇게 출력 된다.

logger: 2023-12-01 17:26:52,735 | INFO | app.py:7 | 72288 >>> Value : 10, String : test
logger: 2023-12-01 17:26:52,736 | WARNING | app.py:8 | 72288 >>> Warning

댓글남기기