2014-07-08 3 views
1

현재 나는 다음과 같은 명령을 사용하여 로그 파일에 스크립트를 리디렉션하고 있습니다. 오히려 인쇄 할 수있는 행 그룹이 생길 때까지 대기합니다. 콘솔과 로그 파일을 동시에 쓰길 원합니다. 출력 리다이렉션으로 어떻게이 작업을 수행 할 수 있습니다. 콘솔에서 스크립트를 실행하면 필요한 모든 것을 인쇄합니다. 한 번에 약 50 줄을 기록하므로 로그 파일에 꼬리 -f를 사용하는 것이 원활하지 않습니다. 어떤 제안? 콘솔하지 'D에 예상대로 출력 말 이후가 같은 소리실시간 출력 재 지정

+0

'python.exe'가 버퍼링'stdout'와'stderr'위한'-u' 스위치가 있습니다. 아마 그게 도움이 될까요? –

+0

그 트릭을 실제로하는 것처럼 보였다! 감사 – preezzzy

답변

0

는 버퍼링을 무엇을하고 있는지 사실입니다.

잠재적 인 솔루션은 그 쉘 버퍼링 취소하는 당신은이 게시물에 볼 수 있었다 : https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

을하지만보다 직접적으로 제어 할 수 있도록 내가 완전히 파이썬 내에서 그 일을 추천하고, 대신 인쇄 표준 출력에, 로깅 모듈을 사용하십시오.

이 여러 로깅 수준의 측면에서 추가적인 유연성을 허용 할, 중앙 로그 객체 (즉, 표준 출력 및 파일에 여러 소스를 추가 할 수있는 기능 - 당신이 logging.handlers.RotatingFileHandler 함께하고 싶은 경우 크기와 회전 하나) 당신은 쉘의 외부 버퍼링을받지 않을 것이다.

상세 정보 : https://docs.python.org/2/howto/logging.html