python logging module problem

Ritesh Raj Sarraf riteshsarraf at gmail.com
Fri Jul 14 07:45:38 EDT 2006


Peter Otten wrote:
> You can achieve the desired behaviour by adding a custom Filter:
>
> import sys
> import logging
>
> logger = logging.getLogger("my_app")
> logger.setLevel(logging.DEBUG)
>
> class LevelFilter(logging.Filter):
>     def __init__(self, level):
>         self.level = level
>     def filter(self, record):
>         return self.level == record.levelno
>
> def make_handler(outstream, format, level):
>     handler = logging.StreamHandler(outstream)
>     formatter = logging.Formatter(format)
>     handler.setFormatter(formatter)
>     handler.addFilter(LevelFilter(level))
>     return handler
>
> logger.addHandler(make_handler(sys.stderr,
>     'STDERR %(levelname)s %(message)s', logging.WARN))
> logger.addHandler(make_handler(sys.stdout,
>     'STDOUT %(levelname)s %(message)s', logging.INFO))
>
> logger.info("the world is flat")
> logger.warning("take care not to fall off its rim")
>
> Not sure whether this is a good idea. Another way might be to use distinct
> loggers.
>
> Peter

Thanks. This looks similar to what I wanted. I'll try customizing it to
my requirements and see if this helps.

Thanks,
Ritesh




More information about the Python-list mailing list