繁体   English   中英

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

[英]Separate local logger with root log python

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

  1. 根记录器(从同一目录中的多个模块获取日志)
  2. 本地记录器(记录特定信息)

我希望local logger的信息与root logger分开。 但是当我创建单独的记录器时。 local logger器的信息也存在于根记录器信息中。

这是我如何执行此操作的示例

# 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')
# other file under root log
logger = logging.getLogger("__main__." + __name__)

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

logger.propagate = False

这部分文档解释得很好: https://docs.python.org/3/howto/logging.html#logging-flow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM