QGIS는 어디에서 오류 로그 메시지를 작성합니까?


33

QGIS 2.0에서 발생한 충돌에 대한 오류 로그를 읽고 복사하여 붙여넣고 싶습니다. 오류가 발생하여 QGIS가 정지되므로 ctrl-alt-del을 수행해야합니다. 패널에서 마지막 메시지를 볼 수 있지만 복사하거나 이전 메시지를 보려면 뒤로 스크롤 할 수 없습니다. 다시 열면 로그 메시지 패널이 0으로 재설정되므로 (QGIS 시작 등) 원하는 모든 변환 오류 메시지가 사라집니다.

오래된 로그 메시지가 디스크에 기록되어 있습니까?

답변:


31

QGIS는 기본적으로 로그 메시지를 파일에 쓰지 않습니다.

디버그 빌드 (일반적으로 야간)가있는 경우 stdout에 작성됩니다. 즉, Linux의 터미널에서 실행하면 메시지가 표시됩니다. Windows에는 메시지를 가로 챌 수있는 Windows 용 디버깅 도구 또는 이와 유사한 도구가 있다고 생각합니다.

대안은 최소한의 파이썬 스크립팅을 사용하는 것입니다. 모든 메시지는 Qt 신호로 방출됩니다. 따라서 이러한 신호에 연결하여 파일에 쓸 수 있습니다. 간단하게 당신의 파이썬 콘솔에 다음 명령을 복사

QGIS 3의 경우 :

filename = '/tmp/qgis.log'

def write_log_message(message, tag, level):
    with open(filename, 'a') as logfile:
        logfile.write('{tag}({level}): {message}'.format(tag=tag, level=level, message=message))

QgsApplication.messageLog().messageReceived.connect(write_log_message)

또는 QGIS 2의 경우 :

filename = '/tmp/qgis.log'

def write_log_message(message, tag, level):
    with open(filename, 'a') as logfile:
        logfile.write('{tag}({level}): {message}'.format(tag=tag, level=level, message=message))

QgsMessageLog.instance().messageReceived.connect(write_log_message)

이 코드를 실행하면 출력이에 기록됩니다 /tmp/qgis.log.


함수 정의의 끝과 파이썬 콘솔이 복사 / 붙여 넣기에 만족할 마지막 줄 사이에 빈 줄이 있어야합니다.
raphael

21

이것은이 특정 문제에 도움이되지 않지만 런타임 동안 로그를보고자하는 경우 (예 : QGIS가 충돌 하지 않음 ) 로그 메시지 패널을 활성화 할 수 있습니다.

QGIS에서보기> 패널> 로그 메시지로 이동하십시오.

상자가 선택되어 있는지 확인하십시오.


9
질문을 한 번 더 읽으십시오.
Stefan

부부를 잃어버린 경우 로그 메시지 패널의 탭을 어떻게 다시 얻습니까?
user32882

정답이므로 +1하십시오. Stackexchange 커뮤니티에 대한 의견이 맞지 않습니다.
Grzegorz Oledzki

8

처리 => 옵션

이것을 확인해야합니다 : '알고리즘을 실행 한 후 대화 상자 열기 유지'

그 후 오류 로그를지나 복사 할 수 있습니다

여기에 이미지 설명을 입력하십시오


1

분명하게 들릴지 모르지만 QGIS 메시지 상자를 떠 다니는 대화 상자로 만들어서 화면 상단에서 하단으로 확장하는 것이 유용하다는 것을 알았습니다. 그러면 QGIS가 충돌 할 때 더 많은 메시지를보고 인쇄 할 수 있습니다. 죄송합니다. QGIS가이 메시지를 어디에 쓰는지 모르겠습니다.

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