我试图减少napalm
库发送到syslog的日志记录量,但也允许从代码的其他部分发送info
日志。我将logging.basicConfig
设置为INFO
,但我希望napalm
函数为WARNING
及以上
我有这样的代码:
from napalm import get_network_driver
import logging
import getpass
logging.basicConfig(
filename="/var/log/myscripts/script.log", level=logging.INFO, format="%(asctime)s %(message)s")
def napalm(device):
logging.getLogger().setLevel(logging.WARNING)
username = getpass.getuser()
driver = get_network_driver("junos")
router = driver(str(device), username, "", password="", timeout=120)
router.open()
return router
router = napalm('myrouter')
config = "hostname foobar"
router.load_merge_candidate(config=config)
show = router.compare_config()
logging.info(show)
问题是logging.info
输出从未进入日志文件。如果我做了logging.warning(show)
,它会做,但我希望这是info
。我希望函数是WARNING
的原因是它在info
级别上生成了太多的其他日志记录,这只是噪声。所以尽量减少这一点
这是本书中的一个很好的技巧。看看这是否有助于你的处境
通过在没有参数的情况下调用
logging.getLogger()
,您当前正在检索根记录器,并且覆盖它的级别也会影响所有其他记录器。 相反,您应该检索库的记录器,并仅覆盖该特定记录器的级别napalm
库在其__init__.py
中执行以下操作:即,库记录器的名称为“凝固汽油弹”。 因此,您应该能够通过在脚本中放入以下行来覆盖特定记录器的级别:
一般示例:
输出:
编辑:
因为这对您来说不太好,可能是因为这个库中有很多其他的记录器:
然后我会求助于这样的事情(相关:How to list all existing loggers using python.logging module):
或者,如果您只需打印各种记录器,识别出最吵闹的记录器,并逐一使其静音,就足够了
相关问题 更多 >
编程相关推荐