En Fri, 22 May 2009 08:26:49 -0300, VenkataRamaKrishna Boddu <bvrkchowd...@yahoo.co.in> escribió:

Is there any way, I can disable one logging Handler, while other Log Handler are still available for servicing.....

import logging;
import sys;

thelog = logging.getLogger('app.scsi.cdb');
strmHdlr = logging.StreamHandler(sys.stdout);
fHdlr = logging.FileHandler('a.log')

Please don't use ; to end statements. In Python, ; is a statement *separator*, only required when putting two or more statements in a single line. This is very rarely done; I bet most Python users don't even know about ;

## Now, I want to disable the strmHdlr for some moment without
## actually removing the Handler from logger Object,
## I want to say something like
##
## thelog.disable('StreamHandler');
##
## So., that it disables all the Stream Handlers attached to the Logger Object

## The Need for me is that, I should write My Email Id only to File Stream ## and because of some reasons of moduler design, I don't have references to the
## both the Handlers

## Here, I don't have want to do the StreamHandler removing stuff and adding it again later on
thelog.removeHandler(strmHdlr);
thelog.info('Email: bvrkchowd...@yahoo.co.in');

Instead of disable/enable handlers (or remove/reinsert them), use any of these:

- Levels: loggers have a minimum level to process, and handlers too. If you set the StreamHandler to a slightly higher level than the others, it won't process certain messages. You may use the existing level names, or create a new one (logging.addLevelName), let's say DETINFO = INFO-5 (DETailed INFO). Set the logger and the file handler level both to DETINFO, and the stream handler to INFO. Then use DETINFO to log the email.

- Filters: You can install a filter onto the stream handler (using handler.addFilter) that rejects any record whose msg starts with 'Email:' (or whatever you consider apropiate)

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to