Python 3.x Python3日志记录是否排除某些模块?

Python 3.x Python3日志记录是否排除某些模块?,python-3.x,Python 3.x,我在代码中使用的一些模块(paramiko)已经配置了日志记录,这会产生大量日志记录消息 如何仅从代码打印日志消息,而不是从导入的模块打印日志消息 日志是通过Logging.basicConfig()全局配置的。不要使用basicConfig。确保您的模块正在记录到它们自己的记录器,而不是根记录器 log = logging.getLogger('my_package') log.debug('a message') 确保只在单个模块中设置日志处理程序,通常在运行该工具的脚本中完成。获取包中

我在代码中使用的一些模块(paramiko)已经配置了日志记录,这会产生大量日志记录消息

如何仅从代码打印日志消息,而不是从导入的模块打印日志消息


日志是通过Logging.basicConfig()全局配置的。

不要使用
basicConfig
。确保您的模块正在记录到它们自己的记录器,而不是根记录器

log = logging.getLogger('my_package')

log.debug('a message')
确保只在单个模块中设置日志处理程序,通常在运行该工具的脚本中完成。获取包中使用的相同记录器,然后仅向该记录器添加一个处理程序

log = logging.getLogger('my_package')
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
您现在应该只看到来自
my_包
记录器的日志消息,以及来自该记录器的任何子项的日志消息

log = logging.getLogger('my_package')
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
一个常见的惯例是将它放在每个要使用日志记录的模块的顶部

log = logging.getLogger(__name__)

这样,用于每个模块的记录器将只是该模块的导入路径。因此,如果您通过执行导入package.module导入该模块,记录器的名称也将是
“package.module”
。这样,就很容易指定要记录的特定记录器

不要使用
basicConfig
。确保您的模块正在记录到它们自己的记录器,而不是根记录器

log = logging.getLogger('my_package')

log.debug('a message')
确保只在单个模块中设置日志处理程序,通常在运行该工具的脚本中完成。获取包中使用的相同记录器,然后仅向该记录器添加一个处理程序

log = logging.getLogger('my_package')
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
您现在应该只看到来自
my_包
记录器的日志消息,以及来自该记录器的任何子项的日志消息

log = logging.getLogger('my_package')
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
一个常见的惯例是将它放在每个要使用日志记录的模块的顶部

log = logging.getLogger(__name__)
这样,用于每个模块的记录器将只是该模块的导入路径。因此,如果您通过执行导入package.module导入该模块,记录器的名称也将是
“package.module”
。这样,就很容易指定要记录的特定记录器

如果您,或者您将看到
basicConfig
配置根记录器,它与您通过

logging.getLogger('')
如果您通读日志文档,您将看到
basicConfig
正是-basic配置。你真的应该使用这样的东西:

logger = logging.getLogger(__name__)
然后,您可以向记录器添加各种处理程序:

logger.setLevel(logging.DEBUG)
h = logging.StreamHandler()
h.setLevel(logging.DEBUG)
logger.addHandler(h)
现在,记录器将只显示程序中的日志消息。

如果您,或者您将看到
basicConfig
配置根记录器,它与您通过

logging.getLogger('')
如果您通读日志文档,您将看到
basicConfig
正是-basic配置。你真的应该使用这样的东西:

logger = logging.getLogger(__name__)
然后,您可以向记录器添加各种处理程序:

logger.setLevel(logging.DEBUG)
h = logging.StreamHandler()
h.setLevel(logging.DEBUG)
logger.addHandler(h)

现在,记录器将只显示程序中的日志消息。

如何设置要打印的日志消息?您是否正在使用
basicConfig
?是否正在创建日志流处理程序?是,全局创建basicConfig()。没有使用处理程序。您如何设置要打印的日志消息?您是否正在使用
basicConfig
?是否正在创建日志流处理程序?是,全局创建basicConfig()。没有使用处理程序。