On my development server, I log errors to syslog so they are
accessible from a single location. Web2py tickets present a problem
since they are not logged. I could configure syslog to access errors
from the ticket error file, but it contains more information than I
need and the text isn't in a suitable format.

I added three lines to the RestrictedError class log() method in gluon/
restricted.py. The traceback message of a ticket is then logged quite
nicely.

    def log(self, request):
        ...

            ticket_storage = TicketStorage(db=request.tickets_db)
            ticket_storage.store(request, f, d)
=>          for line in str(self.traceback).split("\n"):
=>              if len(line.strip()) > 1:
=>                  logger.error(line.strip())
            return '%s/%s' % (a, f)
        except:
            logger.error(self.traceback)
            return None

Is there any interest in adding that to the source code?

Also, when I first tested this, I copied the
logger.error(self.traceback) line from the except clause to log the
ticket message. It only logged the first line. The message logged is:
"Traceback (most recent call last):" which isn't much use. Possibly a
for loop similar to what I used above would improve that.

Regards,
Jim Karsten

Reply via email to