Logging exceptions to a file

Pierre GM pierregmcode at gmail.com
Thu May 7 09:19:02 EDT 2009


On May 7, 5:32 am, Lie Ryan <lie.1... at gmail.com> wrote:
> Pierre GM wrote:
> > All,
> > I need to log messages to both the console and a given file. I use the
> > following code (on Python 2.5)
>
> >>>> import logging
> >>>> #
> >>>> logging.basicConfig(level=logging.DEBUG,)
> >>>> logfile = logging.FileHandler('log.log')
> >>>> logfile.setLevel(level=logging.INFO)
> >>>> logging.getLogger('').addHandler(logfile)
> >>>> #
> >>>> mylogger = logging.getLogger('mylogger')
> >>>> #
> >>>> mylogger.info("an info message")
>
> > So far so good, but I'd like to record (possibly unhandled) exceptions
> > in the logfile.
> > * Do I need to explicitly trap every single exception ?
> > * In that case, won't I get 2 log messages on the console (as
> > illustrated in the code below:
> >>>> try:
> >>>>     1/0
> >>>> except ZeroDivisionError:
> >>>>     mylogger.exception(":(")
> >>>>     raise
>
> > Any comments/idea welcomed
> > Cheers.
>
> Although it is usually not recommended to use a catch-all except, this
> is the case where it might be useful. JUST DON'T FORGET TO RE-RAISE THE
> EXCEPTION.
>
> if __name__ == '__main__':
>      try:
>          main():
>      except Exception, e:
>          # log('Unhandled Exception', e)
>          raise

OK for a simple script, but the (unhandled) exceptions need to be
caught at the module level. Any idea?



More information about the Python-list mailing list