如何使Yum Python API模块输出静音?

2024-09-30 08:22:34 发布

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

有没有方法可以防止yum API在运行时创建输出?在

如果代码为el3.3,则运行以下代码:

import yum
yb = yum.YumBase()
yb.repos.populateSack(mdtype='metadata', cacheonly=0)

我得到以下输出:

^{pr2}$

我不想要blackholeall输出,只想得到来自yum API的输出。在


Tags: 方法代码importapireposmetadatayumyb
2条回答

在这里背负着表哥89的答案。在

我不确定这是否是一个详尽的清单,每百胜日志,但我认为它是相当接近。在你开始调用Yum之前,你可以禁用它们,它将完全静音。在

import logging
from yum.logginglevels import __NO_LOGGING

yumLoggers = ['yum.filelogging.RPMInstallCallback','yum.verbose.Repos', 'yum.verbose.plugin', 
'yum.Depsolve', 'yum.verbose', 'yum.plugin', 'yum.Repos', 'yum', 'yum.verbose.YumBase', 
'yum.filelogging', 'yum.verbose.YumPlugins', 'yum.RepoStorage', 'yum.YumBase', 
'yum.filelogging.YumBase', 'yum.verbose.Depsolve']

for loggerName in yumLoggers:
    logger = logging.getLogger(loggerName)
    logger.setLevel(__NO_LOGGING)

您还可以通过创建一个继承RPMBaseCallback的类并将其传递给各种事务函数(processTransaction等)来覆盖各种RPM事务中的一些进度条/事件记录器。但是,如果您像我前面所做的那样禁用所有的记录器,那么这些函数将不会被调用。在

编辑: 经进一步检查,我认为最简单的答案是:https://stackoverflow.com/a/43625141/619255

然而,这种方法不会使不完整事务的警告静音,而禁用所有日志记录器。在

我研究了RHEL7 yum代码,我相信您可以在代码中这样做:

import logging
logger = logging.getLogger("yum.verbose.YumPlugins")
# Only print critical logs from yum
logger.setLevel(logging.CRITICAL)

# The "Loaded plugins:" text is printed as a debug. So anything above
# logging.DEBUG should silence it

相关问题 更多 >

    热门问题