从模块导入日志记录功能

时间:2017-10-22 01:14:42

标签: python python-3.x logging

我试图导入一个初始化两个不同级别的日志处理程序的函数。问题是,对于下面的选项1,我获得了根记录器,而对于选项2,我无法将任何日志打印到屏幕上。

有人有任何可能有帮助的想法或建议吗?

选项1 TestModule:

def set_logger(
    app_name=argv[0][:-3]):
    logging.basicConfig(
    level=logging.DEBUG,
    format='[%(levelname)s][%(module)s][%(asctime)s] - %(message)s',
    filename="test.log"
    )
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('[%(levelname)s][%(module)s][%(asctime)s] - %(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

选项2 TestModule:

def set_logger(
    app_name=argv[0][:-3]):

    formatter = logging.Formatter('[%(levelname)s][%(module)s][%(asctime)s] - %(message)s')
    logger = logging.getLogger(app_name)
    stream_log = logging.StreamHandler()
    stream_log.setLevel(logging.INFO)
    stream_log.setFormatter(formatter)
    file_log = logging.FileHandler("test.log")
    file_log.setLevel(logging.DEBUG)
    file_log.setFormatter(formatter)
    logger.addHandler(stream_log)
    logger.addHandler(file_log)
脚本中的

from Module import set_logger
import logging

if __name__ == "__main__"
    set_logger()
    logging.info("start_app")

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

在选项2中,您通过logging.getLogger()初始化记录器 您需要返回该函数中的记录器并使用返回的记录器

进行调用
if __name__ == "__main__"
    logger = set_logger()
    logger.info("start_app")