Python linux是否有显示文件打开失败的错误日志文件?
我花了几天时间跟踪python脚本中的一个bug(我不知道,web2py使用了与我期望的不同的根目录,导致文件读取以静默方式失败。因此,当从命令行运行时,代码很好,但当从web运行时,代码失败)。 终于找到了罪魁祸首之后,我可以修复无声故障(在一个库中,在本例中是openCV),但如果存在这种故障,一个更聪明的侦探会在某种系统日志中看到故障。然后,无论沉默的失败在哪里,我仍然能看到它,不必费力地追踪失败。Python linux是否有显示文件打开失败的错误日志文件?,python,linux,logging,var,error-log,Python,Linux,Logging,Var,Error Log,我花了几天时间跟踪python脚本中的一个bug(我不知道,web2py使用了与我期望的不同的根目录,导致文件读取以静默方式失败。因此,当从命令行运行时,代码很好,但当从web运行时,代码失败)。 终于找到了罪魁祸首之后,我可以修复无声故障(在一个库中,在本例中是openCV),但如果存在这种故障,一个更聪明的侦探会在某种系统日志中看到故障。然后,无论沉默的失败在哪里,我仍然能看到它,不必费力地追踪失败。 那么-linux是否有某种全局错误日志文件记录文件读取错误之类的事情? 是的,我知道有特定
那么-linux是否有某种全局错误日志文件记录文件读取错误之类的事情?
是的,我知道有特定于python的错误日志记录,但问题仍然存在。e、 g.如果我有一个复杂的项目,有一些python、一些C或其他什么,而某个地方有人在默默地失败,那么一个系统范围的错误日志将非常有帮助。也许你可以发布读取该文件的代码?open()故障应始终生成
IOError
异常:
with open('no-such-file') as f:
print f.read()
Traceback (most recent call last):
File "app.py", line 1, in <module>
with open('no-such-file') as f:
IOError: [Errno 2] No such file or directory: 'no-such-file'
这个解决方案的性能可能不足以满足您的需求,但不管怎样,我想报告我所做的一些研究,这些研究可能会引导您走向正确的方向 首先,linux系统中有/var/log下的日志记录。感兴趣的是syslog和messages文件,它们记录各种系统事件。但文件读取“错误”不会被记录,如下所述 在打开一个不存在的文件的情况下,我们最终会寻找一个失败的()。但是在这个低级别上没有异常的概念——如果open失败,它只返回一个负数。在C语言中,您可以打开一整天都不存在的文件,并且程序仍然返回0错误代码 这意味着您必须自己做一些工作来跟踪此问题。我认为您的问题是,“如何在低于python异常的级别上跟踪这些错误?”为此,您可以使用strace和grep的组合。您为每个进程附加strace,它会记录发生的所有系统调用 假设我们有一个C程序,看起来像这样:
#include <stdio.h>
int main()
{
fopen("nothere.txt","r");
}
当然,您可以在python进程上运行strace以获得相同的结果
需要警惕的事情:
当您的脚本由Web服务器运行时,错误消息通常会出现在服务器维护的日志中,因此您需要查看服务器是如何配置的。我知道这并没有完全回答你的问题(这就是为什么它出现在评论中:)。谢谢,但我没有寻找错误的来源-我已经找到了。我正在寻找一种方法,通过使用总是报告此类错误的系统错误日志,避免在将来查找此类错误。那我就不知道了;我唯一的建议是,如果库正在静默地捕获并忽略异常,那么就向库提出一个问题。没有跟踪这类事情的系统日志-异常的工作就是让您知道这些错误。
#include <stdio.h>
int main()
{
fopen("nothere.txt","r");
}
open("nothere.txt", O_RDONLY) = -1 ENOENT (No such file or directory)