Changeset 1546 for pykota/trunk/pykota/tool.py
- Timestamp:
- 06/18/04 15:34:49 (20 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/pykota/tool.py
r1545 r1546 22 22 # 23 23 # $Log$ 24 # Revision 1.104 2004/06/18 13:34:49 jalet 25 # Now all tracebacks include PyKota's version number 26 # 24 27 # Revision 1.103 2004/06/18 13:17:26 jalet 25 28 # Now includes PyKota's version number in messages sent by the crashrecipient … … 411 414 __str__ = __repr__ 412 415 416 def crashed(message) : 417 """Minimal crash method.""" 418 import traceback 419 lines = [] 420 for line in traceback.format_exception(*sys.exc_info()) : 421 lines.extend([l for l in line.split("\n") if l]) 422 msg = "ERROR: ".join(["%s\n" % l for l in (["ERROR: PyKota v%s" % version.__version__, message] + lines)]) 423 sys.stderr.write(msg) 424 sys.stderr.flush() 425 return msg 426 413 427 class PyKotaTool : 414 428 """Base class for all PyKota command line tools.""" … … 470 484 def crashed(self, message) : 471 485 """Outputs a crash message, and optionally sends it to software author.""" 472 import traceback 473 lines = [] 474 for line in traceback.format_exception(*sys.exc_info()) : 475 lines.extend([l for l in line.split("\n") if l]) 476 msg = "ERROR: ".join(["%s\n" % l for l in ([message] + lines)]) 477 sys.stderr.write(msg) 478 sys.stderr.flush() 486 msg = crashed(message) 479 487 try : 480 488 crashrecipient = self.config.getCrashRecipient() 481 489 if crashrecipient : 482 490 admin = self.config.getAdminMail("global") # Nice trick, isn't it ? 483 fullmessage = "========== Traceback for PyKota v%s:\n\n%s\n\n========== sys.argv :\n\n%s\n\n========== Environment :\n\n%s\n" % \484 ( version.__version__,msg, \491 fullmessage = "========== Traceback :\n\n%s\n\n========== sys.argv :\n\n%s\n\n========== Environment :\n\n%s\n" % \ 492 (msg, \ 485 493 "\n".join([" %s" % repr(a) for a in sys.argv]), \ 486 494 "\n".join([" %s=%s" % (k, v) for (k, v) in os.environ.items()])) 487 495 server = smtplib.SMTP(self.smtpserver) 488 server.sendmail(admin, [admin, crashrecipient], "From: %s\nTo: %s\nCc: %s\nSubject: PyKota crash traceback !\n\n%s" % (admin, crashrecipient, admin, fullmessage)) 496 server.sendmail(admin, [admin, crashrecipient], \ 497 "From: %s\nTo: %s\nCc: %s\nSubject: PyKota crash traceback !\n\n%s" % \ 498 (admin, crashrecipient, admin, fullmessage)) 489 499 server.quit() 490 500 except :