简体   繁体   English

只显示我的应用程序的 logging.INFO 而不是导入的模块

[英]Only showing logging.INFO for my app and not imported modules

from HeavyLoggingINFO import Client

class IBRobo:

   def __init__(self):
        hlog_client = Client()
        hlog_client.run()
        
    def run(self)
        logging.info('MY APP LOG STATEMENT')
        
        

if __name__ == '__main__':
    logging.getLogger().setLevel(logging.INFO)
    logging.getLogger().addHandler(logging.StreamHandler())

    robo = IBRobo(...)
    robo.run()
  1. I have the following statement in my python code (above)我的python代码中有以下语句(上)
  2. I have imported a 3rd party module that has a lot of logging (Way too much logging in INFO mode)我已经导入了一个有很多日志记录的第 3 方模块(在 INFO 模式下日志记录太多了)
  3. I would like to only stdout IBRobo INFO statements and none from HeavyLoggingINFO.Client我只想 stdout IBRobo INFO 语句,而没有来自 HeavyLoggingINFO.Client

Questions问题

  • Q1: Is there a way to only log messages from a Class of my choosing; Q1:有没有办法只记录我选择的班级的消息? or list of Classes或类列表
  • Q2: Is there a way to filter logging for select imported modules Q2:有没有办法过滤选择导入模块的日志记录

找出HeavyLoggingINFO.Client使用的记录器名称,获取具有该名称的记录器并将其级别设置为高于INFO (例如CRITICAL )。

Based on the suggestion, I was quickly able to identify the complicit module and set the logging to CRITICAL (example below)根据建议,我很快就能够识别出同谋模块并将日志记录设置为 CRITICAL(下面的示例)

   if __name__ == '__main__':
        logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
        logging.getLogger().setLevel(logging.INFO)
        logging.getLogger("ib_insync").setLevel(logging.CRITICAL)
        logging.getLogger().addHandler(logging.StreamHandler())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM