【问题标题】:Getting Scrapy Loggers获取 Scrapy 记录器
【发布时间】:2016-02-02 11:07:26
【问题描述】:

我正在使用 CrawlerProcess 类从使用 Core API 的脚本运行 Scrapy。根据文档,当以这种方式运行蜘蛛时,Scrapy 可以使用configure_logging 函数配置日志记录。然后我将如何获得 Scrapy 记录器(所以我可以添加处理程序和过滤器?)。看起来 Scrapy 在使用配置文件时使用了根记录器,是否可以针对此用例将其重定向到单独的记录器?

【问题讨论】:

    标签: python logging scrapy


    【解决方案1】:

    您不需要为此目的获取记录器。只需将设置字典传递给scrapy.utils.log.dictConfig。见https://docs.python.org/2/library/logging.config.html#logging.config.dictConfig。您可以使用scrapy.utils.log.DEFAULT_LOGGING 作为参考:

    DEFAULT_LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'loggers': {
            'scrapy': {
                'level': 'DEBUG',
            },
            'twisted': {
                'level': 'ERROR',
            },
        }
    }
    

    例如,

    from scrapy.utils import log
    
    process = CrawlerProcess({
        'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
    })
    log.dictConfig({
        'version': 1,
        'disable_existing_loggers': True,
        'loggers': {
            'scrapy': {
                'level': 'ERROR',
            }
        }
    })
    

    另外,如果您只想减少冗长,请查看LOG_LEVEL Scrapy 设置。

    【讨论】:

    • 谢谢!我试了一下,好像有点效果。但是,当我在自己的 dictConfig 中将 Scrapy 设置为错误后,Scrapy 仍然会登录到 Debug 级别。有什么想法吗?
    • 我很抱歉这个轻率的回答。你必须调用dictConfig,但只有在CrawlerProcess 被初始化之后。我会更新我的答案。
    猜你喜欢
    • 2021-12-25
    • 2023-03-27
    • 2018-11-24
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多