Show
Ignore:
Timestamp:
06/18/04 15:34:49 (20 years ago)
Author:
jalet
Message:

Now all tracebacks include PyKota's version number

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/tool.py

    r1545 r1546  
    2222# 
    2323# $Log$ 
     24# Revision 1.104  2004/06/18 13:34:49  jalet 
     25# Now all tracebacks include PyKota's version number 
     26# 
    2427# Revision 1.103  2004/06/18 13:17:26  jalet 
    2528# Now includes PyKota's version number in messages sent by the crashrecipient 
     
    411414    __str__ = __repr__ 
    412415     
     416def 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 
    413427class PyKotaTool :     
    414428    """Base class for all PyKota command line tools.""" 
     
    470484    def crashed(self, message) :     
    471485        """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) 
    479487        try : 
    480488            crashrecipient = self.config.getCrashRecipient() 
    481489            if crashrecipient : 
    482490                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, \ 
    485493                                 "\n".join(["    %s" % repr(a) for a in sys.argv]), \ 
    486494                                 "\n".join(["    %s=%s" % (k, v) for (k, v) in os.environ.items()])) 
    487495                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)) 
    489499                server.quit() 
    490500        except :