2013-09-07 2 views
0

Я создал стандартную простое приложение склянки, который выводит стандартный запрос такие строки так:Python Logger активирован после Twilio?

127.0.0.1 - - [07/Sep/2013 13:23:34] "GET /static/lib/jquery.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:34] "GET /static/lib/bootstrap/js/bootstrap.min.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:34] "GET /static/lib/md5.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:34] "GET /static/lib/gmaps.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:34] "GET /static/lib/ckeditor/ckeditor.js HTTP/1.1" 304 - 

Но как только я инициализировать экземпляр TwilioRestClient из драйвера python Twilio, протоколирование начинает выглядеть

127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/jquery.js HTTP/1.1" 304 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/jquery.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/bootstrap/js/bootstrap.min.js HTTP/1.1" 304 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/bootstrap/js/bootstrap.min.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/md5.js HTTP/1.1" 304 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/md5.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/gmaps.js HTTP/1.1" 304 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/gmaps.js HTTP/1.1" 304 - 
127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/ckeditor/ckeditor.js HTTP/1.1" 304 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 13:23:55] "GET /static/lib/ckeditor/ckeditor.js HTTP/1.1" 304 - 

Префикс INFO:werkzeug: приводит меня к выводу, что werkzeug использует регистратор python по умолчанию, но не имеет «включен», но Twilio входит и включает его. Я уверен, что это не совсем так, как это работает, но вы понимаете.

Должен ли я вручную отключать регистратор python, как только я инициализирую Twilio? Как так? Могу ли я оставить его включенным только для Twilio?

Спасибо!

UPDATE: Воспроизведите проблему

twilio_test.py

from flask import Flask 
from twilio.rest import TwilioRestClient 

app = Flask(__name__) 

twilio_sid = 'TWILIO_SID' 
twilio_auth_token = 'TWILIO_TOKEN' 
origin_number = 'TWILIO_PHONE_NUMBER' 
recipient_number = 'YOUR_CELL_NUMBER' 

@app.route('/') 
def hello(): 
    return 'Hello!' 

@app.route('/twilio/') 
def hello_twilio(): 

    twilio_client = TwilioRestClient(twilio_sid, twilio_auth_token) 

    twilio_msg = twilio_client.sms.messages.create(to=recipient_number, from_=origin_number, body='Twilio test script') 

    return 'Hello Twilio!' 

if __name__ == '__main__': 
    app.run(debug=True) 

выход (обратите внимание только запрос/Twilio/находится на 4-й линии)

127.0.0.1 - - [07/Sep/2013 17:07:12] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:12] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:12] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:18] "GET /twilio/ HTTP/1.1" 200 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 17:07:18] "GET /twilio/ HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:20] "GET/HTTP/1.1" 200 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 17:07:20] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:21] "GET/HTTP/1.1" 200 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 17:07:21] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [07/Sep/2013 17:07:21] "GET/HTTP/1.1" 200 - 
INFO:werkzeug:127.0.0.1 - - [07/Sep/2013 17:07:21] "GET/HTTP/1.1" 200 - 
+0

Это интересная проблема! Можете ли вы предоставить уменьшенный тестовый пример, который воспроизводит ошибку? –

+0

Я написал пример приложения для вас, которое воспроизводит проблему и добавляет ее выше –

+0

Теперь посмотрим –

ответ

0

Похоже, что проблема заключается в дополнительном вызове s до logging.<x> вызывают дублирующиеся ошибки. Я был в состоянии воспроизвести проблему с этой сутью (не Twilio):

https://gist.github.com/kevinburke/6477126

Если импортировать logging в верхней части приложения Werkzeug не будет иметь два сообщения журнала.

Соответствующий раздел кода в Werkzeug здесь:

https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/_internal.py#L77

Вы хотите что-то вроде этого в верхней части приложения, чтобы получить ровно один Werkzeug/КОЛБУ отладки регистратор:

import logging 
logging.basicConfig() 
logger = logging.getLogger() 
logger.setLevel(logging.DEBUG) 
+0

Да, похоже, что проблема связана с флягой, чем с Twilio. –

+0

Похоже, Werkzeug пытается быть умным о регистрации, см. Код, который я опубликовал в сообщении. –

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