Python:仅更改子模块中所有处理程序的记录器格式

时间:2018-11-07 14:08:52

标签: logging python-3.4

我有三个模块,loglib,main和submod。

loglib保存我的记录器的配置,main是我的主程序,submod是一个子模块。

主要

UploadDocument

submod:

import os
import loglib
import logging
import submod

logger = logging.getLogger(__name__)

scriptname=os.path.splitext(os.path.basename(__file__))[0]
loglib.configure_logger(LOGFILE=scriptname,LOGLEVEL='DEBUG')

logger.info("Starting")

submod.printsomething("calling module")

logger.debug("Stopping")

我正在尝试在submod(仅此一种)中更改记录器的格式以包括记录器名称,但是它不起作用。上面的输出是:

import logging

logger = logging.getLogger("submod")

formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s', datefmt='%d.%m.%Y %H:%M:%  S')

for h in logging.getLogger().handlers:
    h.setFormatter(formatter)
    logger.addHandler(h)


def printsomething(text):
    logger.info("In function printsomething")
    logger.info(text)

我希望第二和第三行看起来像这样:

07.11.2018 14:58:30 INFO Starting
07.11.2018 14:58:30 INFO In function printsomething
07.11.2018 14:58:30 INFO calling module
07.11.2018 14:58:30 DEBUG Stopping

因此,显然获取根记录程序处理程序并更改其格式化程序并将其添加到submod-logger是错误的方法。有人知道正确的方法是什么吗?

0 个答案:

没有答案