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