Как изменить формат сообщения журнала Python для каждого регистратора -?

После прочтения документации поlogging, я знаю, что могу использовать подобный код для выполнения простой регистрации:

import logging

def main():
    logging.basicConfig(filename="messages.log",
                        level=logging.WARNING,
                        format='%(filename)s: '    
                                '%(levelname)s: '
                                '%(funcName)s(): '
                                '%(lineno)d:\t'
                                '%(message)s')

    logging.debug("Only for debug purposes\n")
    logging.shutdown()

main()

Однако я понял, что не знаю, как изменить формат сообщений журнала для каждого регистратора -, поскольку basicConfigявляется функцией уровня модуля -. Этот код работает для создания различных регистраторов с разными уровнями, именами и т. д., но есть ли способ изменить формат этих сообщений журнала также для каждого регистратора -, аналогично basicConfig?

import inspect
import logging

def function_logger(level=logging.DEBUG):
    function_name = inspect.stack()[1][3]
    logger = logging.getLogger(function_name)
    logger.setLevel(level)
    logger.addHandler(logging.FileHandler("{0}.log".format(function_name)))
    return logger

def f1():
    f1_logger = function_logger()
    f1_logger.debug("f1 Debug message")
    f1_logger.warning("f1 Warning message")
    f1_logger.critical("f1 Critical message")

def f2():
    f2_logger = function_logger(logging.WARNING)
    f2_logger.debug("f2 Debug message")
    f2_logger.warning("f2 Warning message")
    f2_logger.critical("f2 Critical message")

def main():
    f1()
    f2()
    logging.shutdown()

main()

33
задан Ricardo Altamirano 20 July 2012 в 15:19
поделиться