我想从主模块和所有子模块登录到单个日志文件。
从主文件发送的日志消息(我在其中定义了记录器)工作正常。但是从调用发送到导入函数的函数丢失了。
如果我使用logging.basicconfig,它是有效的,如下面的示例1所示。
但第二个允许更多自定义设置的示例不起作用。
你知道为什么吗?
# in the submodule I have this code
import logging
logger = logging.getLogger(__name__)
示例1-工作
在这里,我创建两个处理程序并将它们传递给
basicConfig
以下内容:
# definition of root looger in main module
formatter = logging.Formatter(fmt="%(asctime)s %(name)s.%(levelname)s: %(message)s", datefmt="%Y.%m.%d %H:%M:%S")
handler = logging.FileHandler('logger.log')
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
handler2 = logging.StreamHandler(stream=None)
handler2.setFormatter(formatter)
handler2.setLevel(logging.DEBUG)
logging.basicConfig(handlers=[handler, handler2], level=logging.DEBUG)
logger = logging.getLogger(__name__)
示例2-不工作
在这里,我创建两个处理程序和
addHandler()
它们发送到根记录器:
# definition of root looger in main module
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('logger.log')
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
#handler.setLevel(logging.ERROR)
logger.addHandler(handler)
handler = logging.StreamHandler(stream=None)
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)