reinventing the wheel is good, but if you don't need "stripping out parts" you can use the default script
https://github.com/web2py/web2py/blob/master/scripts/tickets2email.py Il giorno venerdì 28 settembre 2012 16:08:57 UTC+2, Hassan Alnatour ha scritto: > > Dear Dave , > > Where did you add this file , and how do you use it ? > > Best Regards, > Hassan Alnatour > > On Friday, September 28, 2012 6:38:18 AM UTC+3, Dave wrote: >> >> I have written a script that will load the error pickle file and email me >> parts of it. The thing I had to be careful about was compliance. One of >> my apps is an ecommerce app. If there is an error during the checkout >> process, there is a chance that sensitive data may be in the error file. >> In that case, I am stripping out the relevant tracebacks and securely >> deleting the rest of the pickle file. >> >> If you do a (from gluon import *), you can essentially load the error >> file as a pickle file and enumerate it as you choose. >> >> I did this all outside the web2py framework so that i wasn't creating >> errors trying to process errors (if that makes sense) >> >> >> - >> #!/usr/bin/env python >> from gluon import * >> import pickle, os, time, cStringIO, smtplib >> >> from email.mime.multipart import MIMEMultipart >> from email.mime.text import MIMEText >> >> >> def senderror(path, errorfile): >> infile = open(path + '/' + errorfile) >> thiserror = pickle.load(infile) >> infile.close() >> >> string_buffer = cStringIO.StringIO() >> >> string_buffer.write("""<html><body><h2>An error has >> occurred.</h2><br/>\n""") >> string_buffer.write("<h4>Exception:</h4><br/>\n") >> string_buffer.write('%s' % >> BEAUTIFY(thiserror['snapshot']['exception'])) >> string_buffer.write('<br/><br/>\n') >> >> string_buffer.write("<h4>Error Type:</h4><br/>\n") >> string_buffer.write('%s' % BEAUTIFY(thiserror['snapshot']['etype'])) >> string_buffer.write('<br/><br/>\n') >> string_buffer.write("<h4>Locals:</h4><br/>\n") >> string_buffer.write('%s' % BEAUTIFY(thiserror['snapshot']['locals'])) >> string_buffer.write('<br/><br/>\n') >> >> string_buffer.write("<h4>Traceback:</h4><br/>\n<pre>") >> string_buffer.write('%s' % BEAUTIFY(thiserror['traceback'])) >> string_buffer.write('</pre><br/><br/>\n') >> string_buffer.write("<h4>Code:</h4><br/>\n<pre>") >> string_buffer.write('%s' % BEAUTIFY(thiserror['code'])) >> string_buffer.write('</pre><br/><br/>\n') >> >> string_buffer.write("</body></html>\n") >> >> msg = MIMEMultipart('alternative') >> text = "An error has occurred at app. Please investigate." >> html = string_buffer.getvalue() >> >> msg['Subject'] = 'App ERROR: ' + errorfile >> msg['From'] = 'FROM' >> msg['To'] = 'TO' >> >> part1 = MIMEText(text, 'plain') >> part2 = MIMEText(html, 'html') >> >> msg.attach(part1) >> msg.attach(part2) >> >> s = smtplib.SMTP('localhost') >> s.sendmail('FROMEMAIL', 'TOEMAIL, msg.as_string()) >> s.quit() >> >> >> def main(): >> path_to_watch = "/home/app/web2py/applications/app/errors" >> before = dict ([(f, None) for f in os.listdir (path_to_watch)]) >> while 1: >> time.sleep (30) >> after = dict ([(f, None) for f in os.listdir (path_to_watch)]) >> added = [f for f in after if not f in before] >> if added: print "Errors found." >> for error in added: >> print 'sending email for file: ', error >> senderror(path_to_watch, error) >> >> before = after >> >> if __name__ == "__main__": >> main() >> >> On Thursday, September 27, 2012 8:32:36 AM UTC-4, Hassan Alnatour wrote: >>> >>> Dear ALL , >>> >>> Is there a way to make all the error be sent to my email when it happens >>> ? >>> >>> Best regards, >>> >> --

