将记录器作为参数传递给函数,并在日志文件中获取函数名称

时间:2017-01-24 18:21:55

标签: python logging

我正在使用日志包为我的应用程序创建日志文件。在 main 函数中,我创建了logger,handler和formatter,并将日志记录级别设置如下:

try:
    os.remove('xxx.log')
except WindowsError:
    pass
LOG_FILENAME = 'xxx.log'
logger = logging.getLogger(__name__)
logger.setLevel(20)
ch = logging.FileHandler(LOG_FILENAME)
ch.setLevel(20)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)

logger.info("info message")

然后,我调用了我想拥有记录器的不同功能。所以我将logger作为参数传递给该函数,然后使用logger.info将信息记录在该函数中。问题是我需要在日志文件中列出函数的名称,所以我编码如下:

test(a, b, c, d, e, f, g, logger)
def test test(a, b, c, d, e, f, g, logger):
    logger = logging.getLogger(__name__)
    logger.info("test ....")

这里有什么问题?如何解决这个问题?任何改进我的编码的建议也值得赞赏。

1 个答案:

答案 0 :(得分:0)

格式化程序需要更改为:

logging.Formatter("%(asctime)s - %(module)s - %(levelname)s - %(message)s")

因此,%(name)s需要根据文档实现%(模块)。