Search code examples
djangologgingformatterdjango-1.8

How to set formatter programmatically?


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?


Solution

  • 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.