python logging 사용법

yaml로 설정

import logging.config, os, yaml


loggingConfigPath = 'logging.yaml'
if os.path.exists(loggingConfigPath):
    with open(loggingConfigPath, 'rt') as f:
        loggingConfig = yaml.load(f.read())
        logging.config.dictConfig(loggingConfig)
else:
    logging.basicConfig(level=logging.INFO)

logging.getLogger(__name__)

logging.debug("debug")
logging.info("info")

logging.yaml

---

version: 1

disable_existing_loggers: False

formatters:
    simple:
        format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

handlers:
    console:
        class: logging.StreamHandler
        level: INFO
        formatter: simple
        stream: ext://sys.stdout

    logfile:
        class: logging.handlers.RotatingFileHandler
        level: DEBUG            
        formatter: simple
        filename: ../log/info.log
        maxBytes: 10485760 # 10MB
        backupCount: 20

root:
    level: DEBUG
    handlers: [console, logfile]

날짜별 로그파일 생성

위의 yaml에서 파일 핸들러를 다음과 같이 수정한다

logfile:
    class: logging.handlers.TimedRotatingFileHandler
    level: DEBUG
    formatter: simple
    when: D
    backupCount: 1
    filename: ../log/info.log

when 의 종류는 다음과 같다

'S' : Seconds
'M' : Minutes
'H' : Hours
'D' : Days
'W0'-'W6' : Weekday (0=Monday)
'midnight' : Roll over at midnight

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Scroll to Top