logging, can one get it to email messages over a certain level?

tinnews at isbd.co.uk tinnews at isbd.co.uk
Mon Nov 12 04:44:20 EST 2012


Steve Howell <showell30 at yahoo.com> wrote:
> On Nov 11, 9:48 am, tinn... at isbd.co.uk wrote:
> > I'm sure this must be possible but at the moment I can't see how to do it.
> >
> > I want to send an E-Mail when the logging module logs a message above
> > a certain level (probably for ERROR and CRITICAL messages only).
> >
> > I.e. I want some sort of hook that will be called when these messages
> > are logged (I can do the sendmail bit OK, I've got code that does that).
> >
> > --
> > Chris Green
> 
> Scroll down to the Handlers section here:
> 
>    http://docs.python.org/2/howto/logging.html#logging-basic-tutorial
> 
> I'm not sure this explains perfectly what you're gonna need to do, but
> I hope it gets you in the ballpark.
> 
Thank you, but yes I agree it's not terribly informative is it.

However I think I understand what I need to do.  I currently have a
function to set up my logging:-

    def initLog(name):
        log = logging.getLogger(name)
        log.setLevel(logging.DEBUG)
        f = logging.handlers.RotatingFileHandler("/home/chris/tmp/mail.log", 'a', 1000000, 4)
        f.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        f.setFormatter(formatter)
        log.addHandler(f)
        return log

As I understand it I just add another line like the 'f =' line but
using the SMTPHandler and then set an appropriate level for that
handler (and formatting).


-- 
Chris Green



More information about the Python-list mailing list