Cython日志文件名&模

时间:2017-08-25 18:40:32

标签: logging cython

如果您call logging module来自cythonised代码funcName and module,那么您会得到错误的值。相反,你从第一个没有来自cython的更高级别的调用者那里获得了值,这是非常误导的。原因是cython没有generate call frames,所以它们对于logging.findCaller方法是不可见的。

有没有办法使用cython进行日志记录?

我不希望更改每个调用日志记录的位置。如果有另一种查找信息的方法,我很乐意monkeypatch logging.findCaller。

1 个答案:

答案 0 :(得分:2)

短期答案是cython不会添加堆栈帧,也没有配置(除了异常,事后堆栈被解开)。邮件列表上的开发人员正在考虑将它们作为一个选项添加,日志记录是另一个需要它们的例子。

短期解决方法是在编译期间调整代码(以编程方式)将帧信息(方法名称,模块,行号等)存储到线程局部变量中,并使用monkey patch logging.findCaller来获取那些详细信息(如果可用)