我正在构建一个GUI程序,它有几个GUI(main)模块和4个不同的QThread模块。我希望能够正确地记录未处理的异常和我指定的其他各种信息。所以我决定使用python的内置日志模块。在
我将其配置为:
logging.basicConfig(filename="ubc.log",
format='%(asctime)-6s: %(name)s - %(levelname)s - %(module)s - %(funcName)s - %(lineno)d - %(message)s',
level=logging.DEBUG)
根据这个配置,我希望日志模块确切地告诉我错误/信息发生在哪一行,在哪个模块中,发生在哪个函数中,等等。但是,这是我在日志中得到的(当我做logging.info("text")
)时:
2011-12-22 16:06:02,072: root - INFO - logging - info - 1592 - Calling load blog names function, tabWidget index is 0
不用说,这些信息大部分对我都没有用。行号绝对不是1592,函数名不是info,模块没有记录。在
重申一下,我想要的是:当我说logging.info("log this")
时,我希望它出现在日志中:
2011-12-22 16:06:02,072: root - INFO - WorkerThread1.py - upload_function(self, email, param) - line number 131 - log this
这样的事情有可能吗?如果有,怎么可能?在
编辑:根据请求,我会添加更多代码:
^{pr2}$logging.info("Prda!")
位于图形用户界面.py文件。如您所见,此消息应该在每次软件启动时写入(这是setupUi)。它是写着的,但现在写的是:
2011-12-22 16:53:04,209: root - INFO - logging - info - 1592 - Prda!
EDIT#2经过进一步的检查,似乎是PyInstaller在某种程度上把事情搞砸了。直接通过解释器运行软件会产生预期的结果;在程序被编译成EXE文件后,会发生上述情况。在
也许traceback module就是你想要的:
我无法重现你的问题。这篇文章包含一个非常简单的例子。请尝试一下,并告诉我们您是否成功获得正确的结果:
myModule.py
:执行后,我的日志文件包含:
^{pr2}$你能发一个完整的片段吗?如果我照你刚才说的做,我会得到一份合适的日志。我将在这里发布我的脚本(名为
stackoverflow_8613924.py
),以供比较:执行它可以让我:
^{pr2}$相关问题 更多 >
编程相关推荐