将日志记录信息从Python代码发送到C#GUI

本文关键字:C#GUI 代码 Python 日志 记录 信息 | 更新日期: 2023-09-27 18:28:52

我有一个正在编辑的程序,其中GUI是用C#创建的,然后用Python运行该过程。目前,Python正在执行以下操作:

SetupLog()
log = logging.getLogger()
log.info()

以跟踪过程中的事件。有没有办法将这些信息发送回C#GUI?

我还试图在C#GUI中创建一个取消按钮,该按钮将在退出/取消时杀死Python模块,我想知道是否有比基于进程ID更好的方法?

将日志记录信息从Python代码发送到C#GUI

这是可能的,但这确实不是最好的方法。

除非SetupLog函数禁用它,否则Python的默认日志记录会将日志消息打印到其stderr。

有多种方法可以在C#中运行进程;如果使用System.Diagnostics.Process来执行此操作,则只需要将ProcessStartInfo.RedirectStandardError属性设置为true,然后启动进程,然后从其StandardError流中读取。事实上,如果您查看MSDN文档,其中的示例文档正是您想要的。


但是logging模块将添加日志头信息,您必须在C#代码中解析这些信息,这是一种浪费。当然,这意味着除了与父对象的通信之外,不能将logging用于其他任何事情。

如果你同时编写Python代码和C#代码,那么只使用一个显式匿名管道(或套接字,或命名管道,或…)并让双方都知道他们在互相交谈,而不是试图欺骗他们这样做会更干净