2016-12-13 2 views
1

첫 번째 질문은 여기에 있지만 네이티브 영어 스피커는 아니므로 너무 가혹하지 마십시오! :)QTextEdit에 파이썬 로깅

저는 현재 더 많은 또는 덜 간단한 파이썬 스크립트로 작업하고 있으며, 지금까지 사용자 정의 "더티 (dirty)"수동 파일 로깅 기능을 사용했습니다.


는 최근 로깅 모듈을 발견하고, 몇 가지 테스트 후, 나는 마침내 그 기본을 생각하고, 실제로 중대하다 ... 그래서 내가 로깅 모듈을

그러나 맞게 내 로그 부품을 업그레이드하고 싶어 , 내 응용 프로그램은 이미 꽤 고급이며 PySide GUI를 사용합니다. 다른 로그 파일을 생성하기 위해 핸들러를 설정하고 싶지만 QTextEdit 콘솔 위젯에 쓰는 핸들러도 설정하고 싶습니다 ...

("writeLog"기능은 생성 된 모든 로그를 포함합니다.) 실행시, 그리고은 QTextEdit에, 또한, 내 응용 프로그램의 일부 특정 부분)


가 어떻게이를 수에 대한 개별 파일 쓰기? (가장 단순한 것이 가장 좋습니다.) Handler 클래스를 서브 클래스 화해야합니까? (파이썬에서 지금 당장은 내 수준보다 높을 것입니다. 그러나 잘 인도한다면 왜 추측하지 못할까요?) 아니면 내가 문서에서 뭔가를 놓친 것입니까? 사전에

감사합니다,

엠마누엘

+0

흠, 잠재적 인 함정이 있습니다. 고급 PySide GUI가 충돌하면 로거가 로그 출력을 표시 할 수 없습니까? 대신 파일이나 콘솔에 로그인하는 것이 더 좋지 않습니까? 그렇지 않으면 나는 핸들러를 하위 클래스 화하고 Qt 신호를 QTextEdit을 업데이트하는 슬롯과 연결하는 것이 매우 간단하다고 생각한다. 그냥 해. 정확히 너를 붙잡고있는 게 뭐야? – Trilarion

+1

답변 해 주셔서 감사합니다. 사실, 응용 프로그램이 무언가의 한가운데서 충돌을 일으킨다면, 로그는이 시점에서 실패 할 것입니다 (수동으로 'open() as'파일 생성뿐만 아니라 로깅과 함께). 아마도 콘솔에 로그를 추가 할 수 있습니다. . 어쨌든, GUI에 임베디드 된 콘솔이 있으며이 콘솔에 로그인 할 수 있기를 원합니다. 서브 클래 싱 아이디어를 확인해 주셔서 감사합니다. 사실, 파이썬에서 초보자입니다. ^^ 게다가,이 어플리케이션은 개발자 팀을위한 도구로서 실제로 짧은 시간 동안 사용되었으므로 아이디어를 계속 지키고 싶지만 어쩌면이 여분의 시간을 들이지 않을 것입니다. dev 아직 ... – Manu310

답변

2

당신은 사용자 정의 로거 대신하여 writeLog 기능을 사용할 수 있습니다. 그것은 아주 쉽습니다. 예 :

class GuiLogger(logging.Handler): 
    def emit(self, record): 
     self.edit.append_line(self.format(record)) # implementation of append_line omitted 

h = GuiLogger() 
h.edit = yourTextEditWidget # this should be done in __init__ 
logging.getLogger().addHandler(h) 

그리고 이제 logging.info("nice")은 GUI 위젯에 로그를 저장합니다.