【发布时间】:2021-06-13 09:51:13
【问题描述】:
我正在尝试在 QML GUI 中创建所有控制台输出的实时日志。 每次 Python 写入 stdout/stderr 时,我都想发出一个 QT 信号。我正在使用 Python 3.8。这是我的代码,它通过写入文件和控制台来执行 QML 输出和 Python 解释器 stderr 的日志记录。
class Log(QObject, object):
def __init__(self):
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("debug.log", mode='w'),
logging.StreamHandler()
]
)
qInstallMessageHandler(self.qt_message_handler)
def qt_message_handler(self, mode, context, message):
log_entry = "%s: %s (%s:%d, %s)" % (mode.name.decode(), message, context.file, context.line, context.file)
logging.warning(log_entry)
【问题讨论】:
-
更新了我的帖子
-
如果您尝试创建类似 IDE 的应用程序,您可能应该在子进程中启动另一个 Python 实例。然后你可以很容易地抓住它的标准输出/标准错误; “沙盒”和“gui”环境也应该明确分开。您可以使用
sys.prefix获取当前解释器的可执行文件。 -
@Torben Klein 好的,很有趣。我知道如何创建另一个 Python 实例,但命令是什么? python3 sys.prefix?
标签: python logging pyqt pyside