How to set formatter programmatically?

567 Views Asked by At

I am trying to format my logger, for which I defined a formatter in the settings life. However I cannot manage to figure out how to set it as the logger's handler's formatter:

def mylogger(name):
    logger = logging.getLogger(name)
    handler = RotatingFileHandler(logger_path, 'w')
    handler.setFormatter(?????)
    logger.addHandler(handler)
    return logger

Note I need to do this programmatically. I can't declare the handler in the setting file because RotatingFileHandler may need to be passed some additional arguments.

So the question is: in handler.setFormatter(?????) how do I get the formatter (by name, for example, just how loggers are retrieved) I defined in the settings file?

1

There are 1 best solutions below

0
ruddra On BEST ANSWER

You can do it like this:

handler = RotatingFileHandler(logger_path, 'w')
formatter = logging.Formatter('%(asctime)-12s [%(levelname)s] %(message)s')  
handler.setFormatter(formatter)

Documentation can be found here: formatter, setFormatter.