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

Peter Otten __peter__ at web.de
Mon Nov 12 05:54:49 EST 2012


tinnews at isbd.co.uk wrote:

> 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.

Here's a minimal example:

import logging
from logging.handlers import SMTPHandler

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)

    mail_handler = SMTPHandler(
        "smtp.example.com",
        "navigator at example.com",
        "captain.nemo at example.com",
        "fyi")
    mail_handler.setLevel(logging.CRITICAL)

    root = logging.getLogger()
    root.addHandler(mail_handler)

    # will print amessage
    root.warn("this is fishy") 

    # will print a message and send an email
    root.critical("giant squid sighted")





More information about the Python-list mailing list