从modu导入日志功能

2024-03-28 09:07:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试导入一个函数,它初始化两个不同级别的日志处理程序。问题是,对于下面的选项1,我得到的是根日志,而对于选项2,我无法得到任何要打印到屏幕上的日志。你知道吗

有人有什么想法或建议可以帮助你吗?你知道吗

方案1 测试模块:

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测试模块:

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")

我错过了什么?你知道吗


Tags: namelogappmessagestreamformatterlogging选项
1条回答
网友
1楼 · 发布于 2024-03-28 09:07:03

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

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

相关问题 更多 >