standarizes close_spider to use signals
diff --git a/scrapy/contrib/closespider.py b/scrapy/contrib/closespider.py
index 0a3d54596bf..a5df5e8a7cb 100644
--- a/scrapy/contrib/closespider.py
+++ b/scrapy/contrib/closespider.py
@@ -7,9 +7,8 @@
 from collections import defaultdict
 
 from twisted.internet import reactor
-from twisted.python import log as txlog
 
-from scrapy import signals, log
+from scrapy import signals
 
 
 class CloseSpider(object):
@@ -27,7 +26,7 @@ def __init__(self, crawler):
         self.counter = defaultdict(int)
 
         if self.close_on.get('errorcount'):
-            txlog.addObserver(self.catch_log)
+            crawler.signals.connect(self.error_count, signal=signals.spider_error)
         if self.close_on.get('pagecount'):
             crawler.signals.connect(self.page_count, signal=signals.response_received)
         if self.close_on.get('timeout'):
@@ -40,13 +39,10 @@ def __init__(self, crawler):
     def from_crawler(cls, crawler):
         return cls(crawler)
 
-    def catch_log(self, event):
-        if event.get('logLevel') == log.ERROR:
-            spider = event.get('spider')
-            if spider:
-                self.counter['errorcount'] += 1
-                if self.counter['errorcount'] == self.close_on['errorcount']:
-                    self.crawler.engine.close_spider(spider, 'closespider_errorcount')
+    def error_count(self, failure, response, spider):
+        self.counter['errorcount'] += 1
+        if self.counter['errorcount'] == self.close_on['errorcount']:
+            self.crawler.engine.close_spider(spider, 'closespider_errorcount')
 
     def page_count(self, response, request, spider):
         self.counter['pagecount'] += 1

also this fix the problem of running multiple spiders in a same process, because the log is one and shared.
