앱이 어떻게 작동하는지 이해하려고 노력 중입니다. 이를 위해 함수 이름과 로그 출력에 메시지를 보내는 줄 번호(코드 내)를 기록하는 것을 목표로 디버그 명령을 각 함수 본문의 첫 번째 줄에 삽입합니다. 마지막으로 이 애플리케이션은 많은 파일로 구성되어 있으므로 애플리케이션의 제어 흐름을 더 잘 이해할 수 있도록 로그 파일을 생성하고 싶습니다.
내가 아는 정보는 다음과 같습니다.
함수 이름을 얻으려면 function_name.__name__
但我不想使用 function_name (这样我就可以快速复制并粘贴通用的 Log.info("Message")
到正文中所有功能)。我知道这可以使用 __func__
매크로를 사용하여 C에서 할 수 있지만 Python에 대해서는 잘 모르겠습니다.
파일 이름과 줄 번호를 얻으려면 내 응용 프로그램이 Python locals()
函数,但使用的语法我并不完全了解,例如: options = " LOG.debug('%(flag)s : %(flag_get)s' % locals())
我尝试使用 LOG.info("My message %s" % locals())
来生成类似 的内容{'self': <__main__.Class_name 对象位于 0x22f8cd0>}
을 사용하는 것을 보았고 믿습니다. 이것에 대한 의견이 있습니까?
로깅을 사용하고 여기에 핸들러를 추가하여 파일에 로그하는 방법을 알고 있지만 단일 파일을 사용하여 내 프로젝트에서 올바른 함수 호출 순서로 모든 로그 메시지를 로그할 수 있는지 잘 모르겠습니다.
여기에 관련없는 질문이 있습니다.
가장 간단한 것부터 시작하겠습니다: (3). logging
를 사용하면 단일 로그 파일이나 기타 출력 대상에 대한 모든 호출을 집계할 수 있습니다. 프로세스에서 발생한 순서대로 정렬됩니다.
다음 단계: (2). locals()
提供当前范围的字典。因此,在没有其他参数的方法中,作用域中有 self
,其中包含对当前实例的引用。所使用的让您感到困惑的技巧是使用字典作为 %
运算符的 rhs 的字符串格式。 "%(foo)s" % bar
将被替换为 bar["foo"]
의 가치.
마지막으로 pdb
에서 사용하는 것과 유사한 몇 가지 자기 성찰 기술을 사용하여 더 많은 정보를 기록할 수 있습니다.
이렇게 하면 들어오는 메시지와 함께 (원래) 함수 이름, 해당 메시지가 정의된 파일 이름, 해당 파일의 줄이 기록됩니다. 자세한 내용은 inspect - 실시간 객체 검사 를 참조하세요.
앞서 댓글에서 언급했듯이 언제든지 import pdb 줄을 삽입하여 <code>import pdb; 行,进入 <code>pdb
交互式调试提示符。 pdb.set_trace() 대화형 디버깅 프롬프트로 들어갈 수도 있습니다. pdb.set_trace()를 실행하고 프로그램을 다시 실행하세요. 이를 통해 코드를 단계별로 실행하면서 선택 사항에 따라 데이터를 검사할 수 있습니다.
위 내용은 단일 파일(함수 이름, 파일 이름, 줄 번호)을 사용한 Python 로깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!