将异常打印到文件中
如何只打印出文件/tmp/exceptions.log中存在的异常信息,而忽略所有的调试语句。下面是异常的快照。
Traceback (most recent call last):
File "/usr/site/bank/views.py", line 1695, in importmydata
o.save()
File "/usr/site/cl/django/django/db/models/base.py", line 435, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
IntegrityError: (1048, "Column 'option_b' cannot be null")
2011-04-14 11:57:40,895 DEBUG In exception
2011-04-14 11:57:40,915 DEBUG No resource found
2011-04-14 11:57:40,926 DEBUG Name
2011-04-14 11:57:40,915 DEBUG No resource found
2011-04-14 11:57:40,915 DEBUG No resource found
2011-04-14 11:57:40,915 DEBUG No resource found
2011-04-14 11:57:40,915 DEBUG No resource found
Traceback (most recent call last):
File "/usr/site/bank/views.py", line 1695, in importmydata
o.save()
File "/usr/site/cl/django/django/db/models/base.py", line 435, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
IntegrityError: (1048, "Column 'option_b' cannot be null")
2011-04-14 11:57:40,895 DEBUG In exception
2011-04-14 11:57:40,915 DEBUG No resource found
2011-04-14 11:57:40,926 DEBUG Name
4 个回答
0
你还可以使用“logview”,这个工具可以在PyPI上找到。如果你查看我最近的PyWorkbooks代码版本(在这里 https://sourceforge.net/projects/pyworkbooks/),里面有一个easy_log文件,可以帮助你把日志设置到logview应用程序中。
logview是一个很棒的图形界面工具,它让你可以做一些事情,比如过滤输入。
0
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是从一个盒子里拿东西,然后把它放到另一个盒子里。
有些时候,我们可能会遇到一些问题,比如数据格式不对,或者数据缺失。这就像是你想从一个盒子里拿出一个玩具,但发现那个玩具坏了,或者根本就没有放在里面。
为了避免这些问题,程序员通常会写一些代码来检查数据的状态,确保在使用之前一切都是正常的。这就像是你在打开盒子之前,先摇一摇,听听里面的声音,确认里面的东西是好的。
总之,处理数据的时候,我们需要小心谨慎,确保每一步都是正确的,这样才能顺利完成我们的任务。
>>> import re
>>> pat = re.compile(r'(\w+:\s.*\n)')
>>> pat.findall(c) # c is your logs content
['IntegrityError: (1048, "Column \'option_b\' cannot be null")\n', 'IntegrityError: (1048, "Column \'option_b\' cannot be null")\n']
>>>
1
最简单的方法是使用grep命令,并加上排除的标志,比如:
grep -v DEBUG /tmp/exceptions.log
这样就会打印出那些不包含“DEBUG”这个字符串的行。