Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用根日志python分离本地记录器_Python_Logging - Fatal编程技术网

使用根日志python分离本地记录器

使用根日志python分离本地记录器,python,logging,Python,Logging,我正在使用python中的日志模块。在我的main.py文件中,我使用了两个记录器 根日志记录器(从同一目录中的多个模块获取日志) 本地记录器(用于记录特定信息) 我希望本地记录器的信息与根记录器分开。但当我创建单独的记录器时。本地记录器的信息也存在于根记录器信息中 下面是我如何做到这一点的示例 # main.py import logging def setup_logger(filename, name = ''): if name == '': logging.b

我正在使用python中的日志模块。在我的
main.py
文件中,我使用了两个记录器

  • 根日志记录器(从同一目录中的多个模块获取日志)
  • 本地记录器(用于记录特定信息)
  • 我希望
    本地记录器
    的信息与
    根记录器
    分开。但当我创建单独的记录器时。本地记录器的信息也存在于根记录器信息中

    下面是我如何做到这一点的示例

    # main.py
    import logging
    
    def setup_logger(filename, name = ''):
        if name == '':
            logging.basicConfig(filename=filename,
                                format='%(asctime)s %(funcName)s %(levelname)s %(message)s',
                                filemode='a')
            logger = logging.getLogger()
        else:
            """
            handler = logging.FileHandler(filename, mode = 'a')
            handler.setFormatter(logging.Formatter('%(asctime)s %(funcName)s %(levelname)s %(message)s'))
            logger = logging.getLogger(name)
            logger.addHandler(handler)
            """
            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
            handler = logging.FileHandler(filename)
            handler.setFormatter(formatter)
    
            logger = logging.getLogger(name)
            logger.setLevel(logging.DEBUG)
            logger.addHandler(handler)
    
            return logger
        logger.setLevel(logging.DEBUG)
        return logger
    
    logger = setup_logger('main.log')
    local_logger = setup_logger('local_log.log', 'local_log')
    

    如果不希望本地记录器将其日志发送到根记录器处理程序,则必须停止传播:

    logger.propagate = False
    

    文档的这一部分很好地解释了这一点:

    您是否查看了,以及您的日志记录器与根日志记录器的关系?是的,我希望本地日志记录器独立于日志层次结构。但不知何故,它与根有关。我不知道如何区分这两者。
    logger.propagate = False