반응형
import logging
def main():
logging.basicConfig(filename="messages.log",
level=logging.WARNING,
format='%(filename)s: '
'%(levelname)s: '
'%(funcName)s(): '
'%(lineno)d:\t'
'%(message)s')
logging.debug("Only for debug purposes\n")
logging.shutdown()
main()
그러나 basicConfig
는 모듈 수준의 함수이기 때문에 로거별로 로그 메시지 형식을 변경하는 방법을 모르겠다는 것을 깨달았습니다. 이 코드는 레벨, 이름 등이 다른 다양한 로거를 만드는 데 사용되지만 basicConfig
와 유사한 방식으로 로거별로 해당 로그 메시지의 형식을 변경하는 방법도 있습니다. ?
import inspect
import logging
def function_logger(level=logging.DEBUG):
function_name = inspect.stack()[1][3]
logger = logging.getLogger(function_name)
logger.setLevel(level)
logger.addHandler(logging.FileHandler("{0}.log".format(function_name)))
return logger
def f1():
f1_logger = function_logger()
f1_logger.debug("f1 Debug message")
f1_logger.warning("f1 Warning message")
f1_logger.critical("f1 Critical message")
def f2():
f2_logger = function_logger(logging.WARNING)
f2_logger.debug("f2 Debug message")
f2_logger.warning("f2 Warning message")
f2_logger.critical("f2 Critical message")
def main():
f1()
f2()
logging.shutdown()
main()
해결 방법
이 시도
import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
# create file handler that logs debug and higher level messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(ch)
logger.addHandler(fh)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
참조 페이지 https://stackoverflow.com/questions/11581794
반응형
'파이썬' 카테고리의 다른 글
파이썬 목록에서 모든 값을 제거 하시겠습니까? (0) | 2021.02.12 |
---|---|
파이썬 Python ftplib로 FTP를 통해 파일을 다운로드하는 방법 (0) | 2021.02.12 |
파이썬 numpy 배열이 참조로 전달됩니까? (0) | 2021.02.12 |
파이썬의 다변량 정규 밀도? (0) | 2021.02.12 |
파이썬 How to create an array of bits in Python? (0) | 2021.02.12 |
댓글