2012-02-28 4 views
1

야간 변환 및 오디오 데이터 보관 처리를 담당하는 small-ish Python 스크립트를 작성했습니다. 길에 예기치 않은 문제 (존재하지 않는 파일, 데이터베이스 서버에 대한 신뢰할 수없는 연결 등등)가 있었기 때문에 문제가 발생했는지 추적하기 위해 Python의 자체 로깅 기능을 추가했습니다.파이썬의 logging.FileHandler를 구성하는 올바른 방법은 무엇입니까?

문제는 스크립트가 실행되는 곳 (예 : 현재 작업 디렉토리)에 로그 파일이 생성되므로 두 개의 로그 파일이 있는데 하나는 내 homedir (스크립트가 cron으로 실행될 때 사용됨)이고 다른 하나는 스크립트의 자체 디렉토리 (디버깅 할 때 사용). 나는 스크립트와 같은 디렉토리에 로그 파일과 설정 파일을 보관하는 것을 선호한다.

여기 로거의 구성을로드 해요 : 여기

logging.config.fileConfig(os.path.join(sys.path[0], 'logger.conf')) 

... 그리고는 내가 logger.conf의 관련 부분이다 : 일을

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=fileFormatter 
args=('echi_export.log', 'a',) 

절대 경로, 내가 해요 조금 그들을 사용하는 것을 꺼려.

즉, 파이썬의 logger 모듈 (특히 FileHandler)을 사용하여 파일 로깅을 구성하는 적절한 방법은 무엇입니까? 일부 실제 사례만으로 충분합니다.

+0

당신이 알아 낸 것처럼 보입니다. FWIW, 나는 종종 stdout에 StreamHandler를 사용하는 것이 더 간단하다는 것을 알게된다. 디버깅을 위해 나는 보통 stdout에서 출력을보고 싶습니다. 그리고 cron에서는 원하는 파일에 파이프 할 수 있습니다 (혼란을 피하기 위해 절대 경로 사용). 선호도의 문제. – danny

+0

cron에서 stdout/stderr을 파이핑하는 것은 분명히 덜 복잡하게 보입니다. – Halka

+0

대답을 알아 낸 후에 대답 *을 추가하고 받아 들인다면 더 낫습니다. 그런 식으로 답을 얻지 못할 것입니다. –

답변

1

그래서, 분명히 내가 수있는 구성 파일 내부 사용 파이썬 표현식 :.

이 로그 파일은 스크립트가에있는 같은 디렉토리에 생성되는 결과
[handler_fileHandler] 
    <snip> 
args=(os.path.join(sys.path[0],'echi_export.log'), 'a',) 

이 (os.path.dirname(__file__)가 해결 내 시스템의 /usr/lib/python2.7/logging/, 로깅 모듈이있는 곳일 수 있음).

관련 문제