在使用PyObjC时,如何使NSLog与Python的日志模块一起工作?

2024-09-24 22:20:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个基于Django的webapp,它通过PyObjC导入Cocoa框架。Cocoa框架的NSLog()到处都是,虽然我可以在非守护程序模式下运行Django服务器时看到它们,但只要我转到daemon,我就会丢失所有有用的NSLog()输出。在

有没有什么简单的方法可以让NSLog的内容冒泡到Python logging模块的世界中,以便与实际Python代码发出的日志消息合并在一起?在

做了一点谷歌搜索,似乎你可能不得不重定向stderr,并以某种方式把它吸回Python中,这将是一种令人沮丧的。。。在

非常感谢你的帮助。在


Tags: 模块django方法程序框架内容logging世界
1条回答
网友
1楼 · 发布于 2024-09-24 22:20:20

根据this页,NSLog基本上是这样工作的

fprintf(stderr, format_string, args ...);

因此,您确实需要捕获/重定向标准错误输出。我不久前写了一个post,这可能有助于只使用Python的程序,但我猜Cocoa代码在幕后访问进程级文件描述符2(stderr)。因此,您需要对流程'stderr进行一些低级的调整。下面是一个例子:

^{pr2}$

一旦有了fd,就可以从中创建一个类似文件的对象并将其传递给StreamHandler,例如,作为合并Python代码和Cocoa代码的输出的方法。在

相关问题 更多 >