Skip to content

Instantly share code, notes, and snippets.

@dangra
Created January 3, 2013 19:30
Show Gist options
  • Save dangra/4446294 to your computer and use it in GitHub Desktop.
Save dangra/4446294 to your computer and use it in GitHub Desktop.
diff --git a/scrapy/core/scraper.py b/scrapy/core/scraper.py
index 187c1e9..acbf6ea 100644
--- a/scrapy/core/scraper.py
+++ b/scrapy/core/scraper.py
@@ -103,7 +103,8 @@ class Scraper(object):
self._scrape_next(spider, slot)
return _
dfd.addBoth(finish_scraping)
- dfd.addErrback(log.err, 'Scraper bug processing %s' % request, \
+ dfd.addErrback(log.err, 'Scraper bug processing %(request)s',
+ request=request, spider=spider)
spider=spider)
self._scrape_next(spider, slot)
return dfd
@@ -146,7 +147,8 @@ class Scraper(object):
if isinstance(exc, CloseSpider):
self.crawler.engine.close_spider(spider, exc.reason or 'cancelled')
return
- log.err(_failure, "Spider error processing %s" % request, spider=spider)
+ log.err(_failure, "Spider error processing %(request)s",
+ request=request, spider=spider)
self.signals.send_catch_log(signal=signals.spider_error, failure=_failure, response=response, \
spider=spider)
self.crawler.stats.inc_value("spider_exceptions/%s" % _failure.value.__class__.__name__, \
@@ -205,7 +207,7 @@ class Scraper(object):
return self.signals.send_catch_log_deferred(signal=signals.item_dropped, \
item=item, spider=spider, exception=output.value)
else:
- log.err(output, 'Error processing %s' % item, spider=spider)
+ log.err(output, 'Error processing %(item)s', item=item, spider=spider)
else:
logkws = self.logformatter.scraped(output, response, spider)
log.msg(spider=spider, **logkws)
diff --git a/scrapy/log.py b/scrapy/log.py
index be2c1fd..f13b302 100644
--- a/scrapy/log.py
+++ b/scrapy/log.py
@@ -1,4 +1,4 @@
-"""
+"""
Scrapy logging facility
See documentation in docs/topics/logging.rst
@@ -7,11 +7,11 @@ import sys
import logging
import warnings
-from twisted.python import log
+from twisted.python import log, _safeFormat
import scrapy
from scrapy.utils.python import unicode_to_str
-
+
# Logging levels
DEBUG = logging.DEBUG
INFO = logging.INFO
@@ -88,6 +88,7 @@ def _adapt_eventdict(eventDict, log_level=INFO, encoding='utf-8', prepend_level=
why = ev.get('why')
if why:
+ why = _safeFormat(why, ev)
why = unicode_to_str(why, encoding)
if prepend_level:
why = "%s: %s" % (lvlname, why)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment