반응형

logging을 사용시 출력하라고 지정한 내용외에 표준 출력이나 표준 에러로 화면에 보여지는 내용들이 파일에 저장되었으면 하는 아쉬움이 있었습니다. 

 

찾아보니 해결한 코드가 있네요. 하지만 파일에 저장이 되는 반면 화면에는 출력이 보이지 않는 단점이 있습니다. 

https://stackoverflow.com/a/39215961/19664020



2022. 11. 14  최초작성



import logging
import sys


class StreamToLogger(object):
    """
    Fake file-like stream object that redirects writes to a logger instance.
    """
    def __init__(self, logger, level):
      self.logger = logger
      self.level = level
      self.linebuf = ''

    def write(self, buf):
      for line in buf.rstrip().splitlines():
          self.logger.log(self.level, line.rstrip())

    def flush(self):
        pass

logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s:%(levelname)s:%(name)s:%(message)s',
        filename='out.log',
        filemode='a'
        )
log = logging.getLogger()
sys.stdout = StreamToLogger(log,logging.INFO)
sys.stderr = StreamToLogger(log,logging.ERROR)
print('Test to standard out')
raise Exception('Test to standard error')




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts