如何记录从脚本

时间:2015-11-20 11:44:01

标签: python exception logging web-scraping scrapy

大家好我从脚本中运行了多个蜘蛛。脚本将每天安排一次。

  1. 我想分别记录信息,错误。日志文件名必须是 spider_infolog_ [日期] spider_errlog_ [日期] 我正在尝试使用代码,
  2. spider __init__ file

    from twisted.python import log
    import logging
    LOG_FILE = 'logs/spider.log'
    ERR_FILE = 'logs/spider_error.log'
    logging.basicConfig(level=logging.INFO, filemode='w+', filename=LOG_FILE)
    logging.basicConfig(level=logging.ERROR, filemode='w+', filename=ERR_FILE)
    observer = log.PythonLoggingObserver()
    observer.start()
    
    蜘蛛内的

    import logging
    .
    .
    .
    logging.error(message)
    
    1. 如果蜘蛛代码中发生任何异常[就像我从MysqlDB中获取启动URL,如果连接失败,我需要关闭特定的蜘蛛而不是其他蜘蛛,因为我正在运行脚本中的所有蜘蛛]

      提出CloseSpider(消息)

    2. 是否足以关闭特定蜘蛛的代码?

      编辑@eLRuLL

      import logging
      from scrapy.utils.log import configure_logging
      LOG_FILE = 'logs/spider.log'
      ERR_FILE = 'logs/spider_error.log'
      configure_logging()
      logging.basicConfig(level=logging.INFO, filemode='w+', filename=LOG_FILE)
      logging.basicConfig(level=logging.ERROR, filemode='w+', filename=ERR_FILE)
      

      我已将上述代码放在一个安排蜘蛛的脚本中。没有工作的文件没有创建,但在控制台我收到了日志消息。

      编辑2

      我在configure_logging()中添加了install_root_handler = False,它给出了spider.log文件中所有控制台输出错误没有区别。

      configure_logging(install_root_handler=False)
      

1 个答案:

答案 0 :(得分:0)

你可以这样做:

from scrapy import cmdline

cmdline.execute("scrapy crawl myspider --logfile mylog.log".split())

将该脚本放在您放置scrapy.cfg

的路径中