Pranav
Pranav

Reputation: 695

Identify python logging handler type

I would like to change python logging file on the fly. I could do that by removing the existing handler and then adding a new one:

for hdlr in log.handlers:  # remove all old handlers
    log.removeHandler(hdlr)
log.addHandler(fileh) 

However, if my logger has multiple handlers, like stream handler, rotating file handler, , I would like to remove

Upvotes: 1

Views: 1409

Answers (2)

Jayant Sahewal
Jayant Sahewal

Reputation: 561

logger is not iterable. It has to be logger.handlers.

for handler in logger.handlers:
    if handler.__class__.__name__ == 'FileHandler':
    logger.removeHandler(handler)

Upvotes: 1

Pranav
Pranav

Reputation: 695

Figured out the we could find the class of the file stream to remove selective handlers:

for handler in logger:
  if handler.__class__.__name__ == 'FileHandler':
    logger.removeHandler(handler)

Upvotes: 3

Related Questions