我正在使用pyVmomi在Python2.6中编写脚本,并使用其中一种连接方法:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
InsecureRequestWarning)
Run Code Online (Sandbox Code Playgroud)
有趣的是,我没有使用pip安装urllib3(但它位于/usr/lib/python2.6/site-packages/requests/packages/urllib3/).
我按照这里的建议尝试过
import urllib3
...
urllib3.disable_warnings()
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何事情.
我正在使用Python日志记录模块,并且想要禁用由我导入的第三方模块打印的日志消息.例如,我正在使用以下内容:
logger = logging.getLogger()
logger.setLevel(level=logging.DEBUG)
fh = logging.StreamHandler()
fh_formatter = logging.Formatter('%(asctime)s %(levelname)s %(lineno)d:%(filename)s(%(process)d) - %(message)s')
fh.setFormatter(fh_formatter)
logger.addHandler(fh)
Run Code Online (Sandbox Code Playgroud)
这会在我执行logger.debug("我的消息!")时打印出我的调试消息,但它也会打印出我导入的任何模块的调试消息(例如请求和许多其他事情).
我想只看到我感兴趣的模块的日志消息.是否可以使日志模块执行此操作?
理想情况下,我希望能够告诉记录器从"ModuleX,ModuleY"打印消息并忽略所有其他消息.
我查看了以下内容,但我不想在每次调用导入函数之前禁用/启用日志记录: logging - 如何忽略导入的模块日志?
我的日志设置看起来像
import requests
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('BBProposalGenerator')
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到日志
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:created proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:added offer with cubeValueId: f23f801f-7066-49a2-9f1b-1f8c64576a03
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): localhost
INFO:BBProposalGenerator:evaluated proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
Run Code Online (Sandbox Code Playgroud)
如何从requests
包中抑制日志语句?所以我只看到我的代码中的日志
INFO:BBProposalGenerator:created proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
INFO:BBProposalGenerator:added offer with cubeValueId: f23f801f-7066-49a2-9f1b-1f8c64576a03
INFO:BBProposalGenerator:evaluated proposal: 763099d5-3c8a-47bc-8be8-b71a593c36ac
Run Code Online (Sandbox Code Playgroud)
谢谢
如何忽略来自导入模块的日志条目(不是我写的)?
设置:
import logging
import <someOtherModule>
logging.basicConfig(level=logging.INFO)
class myClass:
...
def some_method(self):
logging.info('calling module')
someOtherModule.function()
logging.info('stuff happened')
if __name__ == "__main__":
a = myClass().some_method()
Run Code Online (Sandbox Code Playgroud)
日志:
INFO:root:calling module
INFO:<someOtherModule>.<some dependency> <random dependency message here>
INFO:root:stuff happened
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱那个中间消息?
查看日志记录文档或通过谷歌搜索后,我无法找到答案。
我找到了这个答案,但解决方法似乎对我不起作用。
对于好奇的人,实际的日志条目是:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): <address here>
Run Code Online (Sandbox Code Playgroud) 假设您的代码正在使用一个模块,该模块使用logging.info
来自模块的日志语句,而不是logger.info
来自记录器实例,并且您无法控制修改正在使用的模块。
是否可以在不要求维护人员更改代码的情况下为导入的模块自定义日志记录级别?
这些问题描述了一种非常简单的方法来更改特定模块的日志记录级别。
如何禁用请求库中的日志消息?
Python 日志记录 - 禁用导入模块的日志记录
下面的代码按照描述实现了该解决方案,仅记录来自该模块的 ERROR 消息,但它没有按预期转换 WARNING 消息。
当将noise_noise 模块作为字符串文字引用并使用导入符号的名称时,测试模块会产生相同的输出。
run_me.py 缺少什么来抑制 WARN 消息?
编辑:假设此模块代表从其他维护者导入并关闭以进行修改的模块
import logging
def log_things():
logging.warn('WARNING')
logging.info('INFORMATION')
logging.error('DANGER')
Run Code Online (Sandbox Code Playgroud)
import logging
import noisy_noise
import sys
def main(args):
logging.getLogger(noisy_noise.__name__).setLevel(logging.ERROR)
# logging.getLogger('noisy_noise').setLevel(logging.ERROR)
noisy_noise.log_things()
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
Run Code Online (Sandbox Code Playgroud)
$ python run_me.py
WARNING:root:WARNING
ERROR:root:DANGER
Run Code Online (Sandbox Code Playgroud) 我看过如何禁用Requests库中的日志消息?而我想知道,我怎么能用django来管理这些设置呢?本质上,问题是Requests
库过于冗长,我想调整它的日志记录级别warning
甚至是error
.
我们的日志填写如下:
INFO - requests.packages.urllib3.connectionpool (_new_conn:735)
Starting new HTTPS connection (1): www.example.com
INFO - requests.packages.urllib3.connectionpool (_new_conn:735)
Starting new HTTPS connection (1): localhost
Run Code Online (Sandbox Code Playgroud)
这是我当前的Django日志配置,我认为这将是对库过于冗长的修复.但它没有用.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ' '.join(['%(asctime)s', '%(levelname)8s', '- %(name)s',
'(%(funcName)s:%(lineno)d)', os.sep, ' ' * 4, '%(message)s']),
'datefmt': DATEFORMAT,
},
'default': {
'format': ' '.join(['%(asctime)s', '%(levelname)8s', '- %(message)s']),
'datefmt': DATEFORMAT,
},
'syslog': {
'format': ' '.join([PROCTITLE + '[%(process)d]', '[%(levelname)s]', '(%(module)s …
Run Code Online (Sandbox Code Playgroud) 如何从Python中的请求模块中完全删除任何日志记录?我甚至不需要设置CRITICAL级别.像这样的Smth
import logging
requests_log = logging.getLogger("requests")
requests_log.setLevel(logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)
但没有任何消息,甚至是重要的.
如何阻止 py2neo 吐出每个创建的关系/节点,如下所示:
(http://localhost:7474/db/data/'ref=u'relationship/13441'start=u'node/13446'end=u'node/3' type=u'IN' properties={}>, )
正如本页所鼓励的那样,当我将下面的行设置为 OFF 时
java.util.logging.ConsoleHandler.level=OFF
Run Code Online (Sandbox Code Playgroud)
当我调用创建关系/节点的函数时,我会静音记录。但是,如果我直接在我的主文件中创建一些东西(graph.create(...),那么我仍然会看到这个打印到控制台。
使用 python sh 模块时,模块本身有输出,例如正在运行的命令的状态等。是否可以抑制它?我不是指正在执行的命令的输出,而是指模块执行时打印的内容。
例如,如果脚本包含:
import pip
pip.main(['install', "sh"])
import sh
cmdArgs = ["-lrt","/tmp"]
sh.ls(cmdArgs)
Run Code Online (Sandbox Code Playgroud)
当脚本运行时,输出如下:
<Command '/bin/ls -lrt /tmp'>: starting process
<Command '/bin/ls -lrt /tmp', pid 22235>: process started
<Command '/bin/ls -lrt /tmp', pid 22235>: process completed
Run Code Online (Sandbox Code Playgroud)
我宁愿没有输出。我在http://amoffat.github.io/sh/中找不到任何内容
python ×8
logging ×7
python-2.7 ×2
debugging ×1
django ×1
neo4j ×1
py2neo ×1
python-2.6 ×1
pyvmomi ×1
urllib3 ×1