我正在编写一个基于Django的webapp,它通过PyObjC导入Cocoa框架。Cocoa框架的NSLog()
到处都是,虽然我可以在非守护程序模式下运行Django服务器时看到它们,但只要我转到daemon,我就会丢失所有有用的NSLog()
输出。在
有没有什么简单的方法可以让NSLog的内容冒泡到Python logging
模块的世界中,以便与实际Python代码发出的日志消息合并在一起?在
做了一点谷歌搜索,似乎你可能不得不重定向stderr,并以某种方式把它吸回Python中,这将是一种令人沮丧的。。。在
非常感谢你的帮助。在
根据this页,NSLog基本上是这样工作的
因此,您确实需要捕获/重定向标准错误输出。我不久前写了一个post,这可能有助于只使用Python的程序,但我猜Cocoa代码在幕后访问进程级文件描述符2(
^{pr2}$stderr
)。因此,您需要对流程'stderr
进行一些低级的调整。下面是一个例子:一旦有了
fd
,就可以从中创建一个类似文件的对象并将其传递给StreamHandler
,例如,作为合并Python代码和Cocoa代码的输出的方法。在相关问题 更多 >
编程相关推荐