如何通过过滤将一个日志记录指向一个文件并在python中休息到另一个文件

时间:2014-01-15 21:09:07

标签: python logging

我一直在谷歌搜索,因为很快就将selenium log(Automation API)调试信息与应用程序(我的日志信息)分成两个不同的文件,但自动化api日志也出现在我的应用程序日志文件中。

我尝试了以下方法(我也尝试过注释行):

def get_selenium_logger():
  logger=logging.getLogger('selenium.webdriver.remote.remote_connection')
  fh = logging.FileHandler('results/selenium_log.log', delay=True)
  fh.setLevel(logging.DEBUG)
  logger.addHandler(fh)

  return logger

def get_application_logger():
  logger=logging.getLogger()
  logging.basicConfig(level=logging.DEBUG)
  fh = logging.FileHandler('results/automation_log.log', delay=True)
  fh.setLevel(logging.DEBUG)

  formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(funcName)s - %(lineno)d - %(message)s')
  fh.setFormatter(formatter)  
  #logger.removeFilter(logging.Filter('selenium.webdriver.remote.remote_connection'))
  logger.addHandler(fh)
  return logger

def my_automation_code():
  get_selenium_logger()
  app_logger = get_application_logger()
  app_logger.info("Test **************")

自动化api(selenium)的调试日志也列在“automation_log.log”上,我该如何过滤它?

1 个答案:

答案 0 :(得分:1)

使用名称不以“selenium”开头的记录器,而不是使用根记录器。将两个日志分开。例如:

def get_application_logger():
  logger=logging.getLogger('myapp')
  # rest of the stuff as in your snippet

更新:您的应用程序的名称就是您的决定。在导入的模块中,您可以使用__name__作为记录器名称;在脚本中,它可以是你喜欢的任何东西,例如脚本的基本名称。