2012-02-23 8 views
5

logging 모듈을 사용하여 설정 한 로거에 stdout의 모든 출력을 리디렉션 할 수 있습니까?표준 출력을 파이썬에서 로거로 리디렉션

import logging 

class LoggerWriter: 
    def __init__(self, logger, level): 
     self.logger = logger 
     self.level = level 

    def write(self, message): 
     if message != '\n': 
      self.logger.log(self.level, message) 

def main(): 
    logging.basicConfig(level=logging.DEBUG) 
    logger = logging.getLogger("demo") 
    info_fp = LoggerWriter(logger, logging.INFO) 
    debug_fp = LoggerWriter(logger, logging.DEBUG) 
    print >> info_fp, "An INFO message" 
    print >> debug_fp, "A DEBUG message" 

if __name__ == "__main__": 
    main() 

경우 :

+2

복제를 http://stackoverflow.com/questions/975248/redirecting-sys-stdout-to-python-logging의 – synthesizerpatel

+0

감사합니다! 어떻게 든 자동 제안은 파일에 대한 표준 출력 리디렉션만을 보여 줬습니다 ... – Gerenuk

답변

4
당신은 this post의 제안을 활용할 수있을

은 다음과 같이 요약 (내가 가진 os.system을이 출력이 나는 또한 참조하거나 occational 인쇄 문 싶습니다 호출) 스크립트 인쇄를 실행

INFO:demo:An INFO message 
DEBUG:demo:An DEBUG message 
관련 문제