Python- "OpenGL.error"로거에 대한 처리기를 찾을 수 없습니다.


80

좋아요, 그것은 무엇이며 왜 Win2003 서버에서 발생하지만 WinXP에서는 발생하지 않습니다.

내 응용 프로그램에 전혀 영향을 미치지 않는 것 같지만 응용 프로그램을 닫으면이 오류 메시지가 나타납니다. 그리고 그것은 성가신 일입니다 (오류 메시지가 있어야하므로).

그래픽 작업을 수행하기 위해 pyOpenGl 및 wxPython을 사용하고 있습니다. 안타깝게도 저는이 Python 앱을 인수 한 C # 프로그래머이며이를 수행하려면 Python을 배워야했습니다.

코드와 버전 번호 등을 제공 할 수 있지만 여전히 기술적 인 내용을 배우고 있으므로 도움을 주시면 감사하겠습니다.

Python 2.5, wxPython 및 pyOpenGL


1
"핸들러를 찾을 수 없음"은 Python의 OpenGL 라이브러리뿐만 아니라 많은 Python 라이브러리에서 발생하는 표준 문제라고 생각합니다. 지금 당장은 "python no handlers can be found for logger"를 구글링 할 때이 질문이 정식 질문 / 솔루션에 가장 가까운 것처럼 보입니다.
— Trevor Boyd Smith

답변:


197

OpenGL이 Win2003에서 일부 오류를보고하려고하지만 로깅 정보를 출력 할 시스템을 구성하지 않은 것 같습니다.

프로그램 시작 부분에 다음을 추가하면 stderr에서 오류에 대한 세부 정보를 볼 수 있습니다.

import logging
logging.basicConfig()

더 많은 구성 정보를 얻으려면 로깅 모듈 에 대한 문서 를 확인하세요. 개념적으로는 log4J와 비슷합니다.


1
정말 도움이되었습니다. 문제를 추적하지 않고 응용 프로그램에서 오류 텍스트를 가져올 수있었습니다.
— Paige Watson

3

이 메시지를 제거 하는 적절한 방법 은 라이브러리 (OpenGL)의 루트 수준 로거에 대해 NullHandler를 구성하는 것입니다.


4
NullHandler로 로그 메시지를 무시하는 것이 옳은 일이 거의 없기 때문에 당신이 반대 투표를 받았다고 생각합니다. 보고 된 메시지는 종종 로거가 이미 구성되어야 할 시점에서 구성되지 않았으며 무언가를 기록하려는 구성 요소의 잠재적 인 문제를 무시하고 있다는 신호입니다. 어떤 경우에는 NullHandler를 사용하는 것이 올바른 방법 일 수 있지만 IMO는 거의 없습니다.
— Moises Silva

라이브러리 NullHandler에 대한 @MoisesSilva는 필수입니다. 그것은 로깅을 해제하지 않습니다 - 그냥 수 세밀한는 생각을 제어reset.css
— 아나톨리 techtonik

당신이 옳습니다. 그러나이 질문의 맥락에서 op에는 OpenGL을 사용하는 자체 응용 프로그램이 있으므로 OpenGL이보고하려고하는 오류를 인쇄하도록 로거를 구성하는 것이 가장 좋습니다. 그로 인해 문제의 근본 원인을 해결하게됩니다.
— Moises Silva

1
이 링크는 사람들이 Python logging모듈에 대해 갖는 일반적인 문제를 보여주는 흥미로운 자료 (관련 공식 Python 버그 보고서가있는 블로그 게시물)를 제공 합니다.
— 트레버 보이드 스미스

2

위의 로깅을 추가 한 후 py2exe setup.py 파일에서 제외하고 있던 TConstants 클래스가 누락되어 문제가 발생했음을 알 수있었습니다.

제외 된 목록에서 "Tconstants"를 제거한 후 더 이상 문제가 발생하지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.