带有多个模块的Python记录器

时间:2019-02-12 16:44:04

标签: python logging

我想创建我的自定义记录器类

import logging
class mylooger():
   def __init__(module_name):
       logger=logging.getlogger(module_name)

我想在主文件和另外两个文件中使用记录器

main.py
test1.py
test2.py

我想确定main.py中的日志文件路径,并将main.py,test1.py和test2.py文件保留在同一文件中。

现在假设稍后我想在其他文件(例如main1.py)中导入test1.py和test2.py。所以我想从main1.py决定我的日志文件路径,并将main1.py,test1.py和test2.py保留在同一文件中。

1 个答案:

答案 0 :(得分:1)

这不是stdlib日志记录的设计方式。如果要在多个模块中使用同一记录器,只需获取同一记录器:

# in main.py
logger = logging.getLogger("mylogger")

def main():
    ...
    logging.basicConfig(...)
    logger.info("some event")

并且:

# in test1.py
logger = logging.getLogger("mylogger")

def some_lib_function():
    ...
    logger.debug("some other event")

日志记录框架本身维护全局可变状态,以便将它们解析为相同的记录器,从而解析为相同的格式化程序/处理程序。