2011-04-15 64 views
2

如何只打印例外using python存在於/tmp/exceptions.log忽略所有異常的調試statements.The快照下面給出一個文件..打印例外

 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 

回答

1

最簡單的方法是使用帶有排除標誌的grep,例如

grep -v DEBUG /tmp/exceptions.log 

這將打印行包含「調試」字符串。

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'] 
>>> 
0

你也可以使用PyLog中的「logview」。如果您查看PyWorkbooks的最新版本(此處爲https://sourceforge.net/projects/pyworkbooks/),則會有一個easy_log文件設置日誌記錄應用程序的日誌記錄。

logview是一個很好的GUI,並允許你做一些事情,如過濾器輸入。

0

如果您使用try-除了結構,你可以這樣做:

try: 
    foo() 
except Exception,ex: 
    print "Exception %s"%str(ex) # Output exception 
    print "Unexpected error:", sys.exc_info()[0] # Exception message 
    import traceback 
    traceback.print_exc() # Output full traceback if you want one