flush()
메서드를 사용하여 파이썬 스크립트에 대한 사용자 지정 로깅 클래스가 있습니다. 목록의 내용은 print()
입니다.객체 .__ del __ (self)는 로깅 클래스를 플러시하는 가장 적절한 장소입니까?
로그를 플러시하지 않고 프로그램이 종료되는 경우 __del__()
메서드에 flush()
메서드를 포함하고자합니다. the documentation 상태에서 그러나, 참고
[...] 때 델()는 모듈 (프로그램의 실행이 완료 될 때 등), 다른 전역에 의해 참조 삭제하는 것에 응답하여 호출 될 del() 메소드가 이미 삭제되었거나 철거 중입니다 (예 : 가져 오기 기계가 종료 됨).
누구나 다른 방법을 권장할까요? 그렇다면 그 이유는 무엇입니까?
어디로 인쇄 하시겠습니까? 하지만 일반적으로 파이널 라이저를 사용하는 것은 매우 나쁜 생각입니다. 주로 비 결정적 순서, 사이클의 최종 결정의 비 결정적인 시간, 파이널 라이저가있는 사이클이 전혀 깨지지 않을 가능성 등 수많은 함정 때문에. 디자인에 "필요"하다고하더라도, 기회는 __del__이 아닌 깨진 디자인입니다. – delnan
'os.print()'- 백업이지만. 아이디어는 프로그램을 종료하기 전에 flush()하는 것입니다. 클래스의 비정상적인 프로그램 종료에 대한 경계를 포함시키는 것이 적절한 지 궁금합니다. 그것이 효과가 있다면 디버깅에 도움이 될 것입니다. –