0
smtpd와 catch하는 ValueError 예외를 사용하여 process_message에서 발생시키고 오류를 발생시키는 대신 stderr에 설명을 인쇄합니다. 그것이 출력하는 것은 ValueError를 구성하는 문자열입니다. 내가 process_message에서이 작업을 수행하는 경우python smtpd stderr 인쇄를 찾을 수 없습니다.
그래서 :
raise ValueError("550, This is the error")
을 나는 콘솔에
550, This is the error
를 참조하십시오. 인쇄물의 원인이되는 코드를 찾지 못했습니다. 여하튼 뭔가가 인쇄 될 때마다 stacktrace를 보여주기 위해 stderr를 오버라이드 할 수 있습니까? 그렇지 않으면이 줄을 인쇄하는 코드 행을 찾으십시오. 내가 루프를 방지하기 위해 __stderr__
을 사용하고
import sys
import traceback
class FileTracer(object):
def __init__(self, out):
self.out = out
def write(self, data):
traceback.print_stack(None, None, sys.__stderr__)
self.out.write(data)
def flush(self):
self.out.flush()
def close(self):
self.out.close()
sys.stderr = FileTracer(sys.stderr)
sys.stderr.write("trigger\n")
sys.stderr.flush()
참고 :
당신은 * 인쇄 된 것이 무엇인지 * 말하지 않았습니다. 그래서 나는'/ usr/lib/python2.7/smtpd.py' 파일에서 에러 메시지를 찾지 못했다. 그러나 그 파일에서 ValueError를 검색하면, 로컬 및 원격 포트 int() 작동하지 않는 방식으로. 서비스 이름이 아닌 번호를 사용하십시오. – HolgerSchurig
죄송합니다, 그것은 무엇 출력합니다 것은 내가 ValueError를 ("550은,이 오류입니다") 내가 (550)를 참조 을 할 그렇다면,이 콘솔에 오류 입니다 으로 ValueError를을 구성 문자열입니다. –