2012-04-13 5 views
2

그래서 파이썬의 로깅 모듈을 사용하여 로깅을 수행합니다. 일반적으로 작동 방식이 마음에 들지만 다음과 같은 쉬운 방법이 있는지 궁금합니다.별도의 파일에 정보 수준 항목 만 로깅

로거를 사용하여 스크립트가 실행되는 동안 파일과 콘솔에 데이터를 로그하고 싶습니다. .info(). Logger.warning()과 logger.error()를 사용하여 콘솔에 경고/오류를 기록하고 싶습니다. 그 부분은 쉽습니다. 그러나, 경고/오류가 정보 로그에도 표시되지 않았 으면 좋겠습니다.

현재 정보 수준에서 처리기를 설정하면 정보 수준 이상에서 항상 전달됩니다.

제가 생각할 수있는 유일한 해결책은 로깅을 분리 된 두 개의 로거로 구분하는 것입니다.하지만이를 피하고 싶습니다.

+0

, 나는 사실 내 대답을 발견 이 질문에 : http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams (이것을 표시 할 적절한 방법이있는 경우, 누군가가 내게 알려 줄까요? 감사합니다.) – MattyP

+0

답변을 댓글이 아닌 답변으로 추가 한 다음 동의하십시오. –

답변

0

로그 레코드의 수준에 따라 처리기에서 로그 메시지를 다르게 처리하는 것이 더 명확한 접근이라고 생각합니다. LogRecord 개체는 levelnolevelname 속성을 가지고 있으므로 logging.error()logging.warning()logging.debug()을 구별하는 데 필요한 모든 것이 있습니다.

더 상세 정보 : 내가 요청하기 전에 검색 할 않았지만 http://docs.python.org/library/logging.html#logrecord-objects

+0

내 자체 로깅 처리기를 만들어야한다는 뜻입니까? – MattyP

+0

@MattyP : 꼭 그런 것은 아닙니다. 기존 처리기 (각 로깅 방법에 하나씩)를 사용하고 다른 필터를 추가 할 수 있습니다. 질문에 대한 답변 ("자신 만의 필터를 만들어야합니까 _ _") : 그것이 달려 있습니다 - 'filter' 메소드를 사용하는 모든 인스턴스가 수행합니다 (http://docs.python.org/library/logging.html# 필터 개체), 당신은 단지 몇 가지 적합한 기존 필터를 찾을 필요 :) – Tadeck