반응형
Python logging 함수간에 공유하여 사용하기
logging 함수를 이용하여 로그를 파일로 저장하도록 logger를 만들었다.
만약 해당함수가 test1.py이고 test2.py에서도 logging를 사용하고 싶다면 동일한 작업을 또 해줘야 할까?
logging.getLogger를 이용하여 test1.py에서 만든 logger를 test2.py에서 사용 할 수 있다.
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger(__name__)
fileHandler = RotatingFileHandler('./myLogger.log', maxBytes=1024*5, backupCount=5)
fileHandler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)s] >> %(message)s'))
logger.addHandler(fileHandler)
logger.setLevel(logging.DEBUG)
logger.debug("test debug log")
logger.info("info log")
logger.warning("warring !!!!")
logger.error("bug bug bug bug")
logger.critical("critical !! ~~")
[기본적인 logger 사용법]
TestLog.py에서 만든 logger를 TestLogSub.py에서 사용하는 방법
make_logger 함수가 logger 이름을 받도록 되어있다.
logging.getLogger 함수 호출시 인자로 등록된 이름을 공유하여
다른 .py에서도 logger를 공유해 사용 할 수 있다.
import logging
from logging.handlers import RotatingFileHandler
import TestLogSub
def make_logger(p_logger_name):
m_logpath = '/usr/an/Log/' + p_logger_name + '.log'
m_logger = logging.getLogger(p_logger_name)
m_file_handler = RotatingFileHandler(m_logpath, maxBytes=1024 * 1024 * 1, backupCount=1)
m_file_handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)s] >> %(message)s'))
m_logger.addHandler(m_file_handler)
m_logger.setLevel(logging.DEBUG)
return m_logger
m_logger = make_logger('work_collect')
m_logger.debug("start work_collect")
TestLogSub.test_log()
[TestLog.py]
TestLogSub.py에서 getLogger 호출 시 인자로 전달된 이름과
TestLog.py에서 getLogger 인자로 전달 된 이름이 동일('work_collect')하다.
이름이 동일하면 make_logger에서 생성된 logger를
TestLogSub에서도 동일하게 공유하여 로그를 파일에 저장하게 된다.
import logging
def test_log():
m_logger = logging.getLogger('work_collect')
m_logger.debug("test")
[TestLogSub.py]
반응형
'Program' 카테고리의 다른 글
Pycharm을 이용하여 Python Virtualenv 개발 환경 구축 (0) | 2020.11.24 |
---|---|
CentOS 8에 MySQL 설치하기 (0) | 2020.11.24 |
Python MySQL 사용법 (0) | 2020.11.23 |
CentOS Python 3.6 설치 (0) | 2018.09.03 |
ElasticSearch 쿼리 (0) | 2018.06.18 |