首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用查询日志-

禁用查询日志-
EN

Stack Overflow用户
提问于 2012-12-19 15:28:39
回答 1查看 721关注 0票数 5

我所处的情况是,我有一个调用logging.debug(xxx)的包。我想通过这个包禁用所有日志语句。有没有办法通过配置来做到这一点?

例如,我运行的每个查询都是在dev服务器的控制台中打印出来的:

调试:root:选择Entities.path,从“dev~xxxx!!Entities.entity”作为实体内部加入"dev~xxxx!!EntitiesByProperty“作为实体上的ebp_0。路径=ebp_0,path内部连接”dev~xxxx!EntitiesByProperty“作为实体上的ebp_1。路径=ebp_1。path内部连接”dev~xxxx!EntitiesByProperty“,AS ON EntitiesByProperty=.pathE 214其中= :1和= :2Entities.path ebp_0.value = :3,ebp_1.kind = :4,ebp_1.name = :5,ebp_1.value = :6,ebp_2.kind = :7,ebp_2.name = :8,ebp_2.value = :9

因此,我知道如何通过修改sdk源代码禁用它,基本上是在__StarSchemaQueryPlan中注释掉日志语句。

代码语言:javascript
复制
logging.debug(query)

有没有一种方法可以在不接触SDK代码的情况下禁用日志记录?我们目前没有定义任何loggingConfigurations,而是使用basicConfiguror。

最后的解决方案谢谢你@血友病:

代码语言:javascript
复制
class Filter(object):
    def filter(self, record):
        if record.funcName=='__StarSchemaQueryPlan' and record.module=='datastore_sqlite_stub':
            return 0
        else:
            return 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 17:51:21

您可以尝试修改日志级别。

因为模块使用了默认的记录器。下面的代码将禁用所有级别小于关键级别的日志。

代码语言:javascript
复制
import logging
logger = logging.getLogger() # get the default logger
logger.setLevel(50) # set the skip all log which is smaller than critical (50)

测试用例

a_lib.py

代码语言:javascript
复制
import logging

def main():
    logging.error("test")
    logging.critical('c')

a_test_case.py

代码语言:javascript
复制
import a_lib
import logging

logger = logging.getLogger()
logger.setLevel(50)
a_lib.main()

结果

代码语言:javascript
复制
> python a_test.py
CRITICAL:root:c

编辑1

另一种方法是使用过滤器。

代码语言:javascript
复制
import logging

# define a new filter
class Filter():
    def filter(self, record):
        # extract property of record such as record.funcName, record.module
        # http://docs.python.org/2/library/logging.html#logrecord-attributes


        if record.module == "a_lib":
            # if the record is from a module you don't want to log
            return 0
        else:
           # for record you want to log
            return 1



 # apply this filter

 filter = Filter()
 logger= logging.getLogger()
 logger.addFilter(filter)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13955651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档