2015-10-18 3 views
6

Я создал паук с помощью Scrapy, но не могу понять, как отключить регистрацию по умолчанию. Из the documentation кажется, что я должен быть в состоянии отключить его, выполнивКак отключить ведение журнала в Scrapy (Python)

 logging.basicConfig(level=logging.ERROR) 

Но это не имеет никакого эффекта. От взгляда на код для logging.basicConfig() Я предполагаю, что это связано с тем, что «у корневого регистратора настроены обработчики», но, возможно, я ошибаюсь в этом. Во всяком случае, кто-нибудь может объяснить, что мне нужно сделать, чтобы заставить Scrapy не выводить обычные

 2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF) 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 
     2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto 

и т. Д.?

EDIT: Как было предложено sirfz ниже, линия

 logging.getLogger('scrapy').setLevel(logging.WARNING) 

может использоваться, чтобы установить уровень протоколирования. Тем не менее, похоже, что вы должны сделать это в методе init (или позже) в своем паук.

ответ

7

Вы можете просто изменить уровень ведения журнала для Scrapy (или любой другой регистратор):

logging.getLogger('scrapy').setLevel(logging.WARNING) 

Это отключает все сообщения журнала меньше уровня WARNING.

Чтобы отключить все сообщения журнала SCRAPY вы можете просто установить propagate в False:

logging.getLogger('scrapy').propagate = False 

Это предотвращает сообщения журнала Scrapy от распространяющихся в корневой регистратор (который печатает на консоли при настройке с помощью basicConfig())

+2

Спасибо за вашу помощь! Я понял, что настройка уровня работает только в том случае, если я поместил его в __init__ моего паука. Я запускаю свой паук из сценария - если я установил уровень ведения журнала, прежде чем начать обход, он (по-видимому) сбрасывается в INFO. Я явно не называю «configure_logging», но я думаю, что Scrapy делает это где-то во время запуска. (?) –

+0

Я никогда не использовал scrapy самостоятельно, но я предполагаю, что искатель применяет конфигурацию по умолчанию для 'logging', которая является странной, поскольку это должно быть оставлено для пользователя. – sirfz

2

В качестве параметра при запуске скрипта вы можете добавить -s LOG_ENABLED=False. Это должно делать свое дело.

Примечание: Для версии 1.1 немного изменился: -s LOG_ENABLED=0

0

logging.basicConfig (** kwargs)

Эта функция ничего не делает, если корневой регистратор уже имеет обработчики настроен для этого.

Scrapy имеет обработчик, настроенные для него, так что это не будет работать

Смежные вопросы