比如 kombu 这个库,我发现他设置了日志
https://github.com/celery/kombu/blob/main/kombu/mixins.py
logger = get_logger(__name__)debug, info, warn, error = ( logger.debug, logger.info, logger.warning, logger.error)
但是默认的日志是不往「标准输出」输出的,这导致有错误也看不到
https://github.com/celery/kombu/blob/main/kombu/log.py
def get_logger(logger): """Get logger by name.""" if isinstance(logger, str): logger = logging.getLogger(logger) if not logger.handlers: logger.addHandler(logging.NullHandler()) return logger
可以看到只有 logger.addHandler(logging.NullHandler())
我想知道,有什么办法可以优雅的设置全部第三方包的日志输出到标准输出,并且只输出 warn 及以上级别吗?
在Python中,可以通过操作 logging
模块来全局设置日志的输出级别和去向。以下是一种可能的方法:
import loggingimport logging.configimport pkg_resources# 获取 kombu 的日志配置conf = pkg_resources.resource_string('kombu', 'logging.conf')# 修改日志配置,将日志级别设置为 WARNING,并将日志输出到标准输出conf = conf.decode().replace('WARNING', 'WARNING,stdout')# 应用新的日志配置logging.config.dictConfig(conf)# 这样设置后,所有 kombu 及依赖的库的日志输出都会被重定向到标准输出
在这个例子中,我们利用了 pkg_resources
模块从 kombu
库中提取出默认的日志配置,然后修改了日志级别和输出去向,最后通过 dictConfig
方法应用这个新的配置。
注意这个方法可能会影响到其它使用 logging
模块的库的日志输出。如果你只希望影响 kombu
这个库,可能需要针对 kombu
的日志配置做特殊处理。
控制台日志被来自第三部分库的日志弄得乱七八糟。例如,我的项目使用kafka和zooker keeper客户机库,因此有太多的日志来自它们 > 2018-05-08 10:30:38.250信息2968---[0:0:0:1:2181)]org.apache.zookeeper.clientcnxn:打开到服务器0:0:0:0:0:0:0:0:0:1/0:0:0:0:0:0:1:2181的套接字连接
我的Java应用程序使用Log4j2作为其日志记录实现,它依赖于使用Log4J的第三方库。 你能建议我如何将这些第三方库的日志记录程序路由到myAppender吗?
当你做一个 在amazon lambda函数中,这会发生什么? 我的设置api网关lambda函数nodejs6。10卷https://n2tredacted.execute-api.us-east-1.amazonaws.com/prod/redactedFunc
Angular 2允许您使用任何第三方控件。 确定要实施的控件后,需要执行以下步骤 - Step 1 - 使用npm命令安装组件。 例如,我们将通过以下命令安装ng2-pagination第三方控件。 npm install ng2-pagination --save 完成后,您将看到组件已成功安装。 Step 2 - 将组件包含在app.module.ts文件中。 import { NgMod
问题内容: Google App引擎文档指出,如果使用纯Python编写,则可以上传和使用第三方库。 为此,我需要采取什么步骤? 问题答案: 我所做的是在根目录中创建了一个名为fix_path.py的文件,如下所示: 然后,我创建了一个lib目录,并将模块放入其中。 例如,我使用WTForms。我的文件结构如下所示。 LIB wtforms fix_path.py somefile.py 当我准备