Я пытаюсь настроить регистратор, который будет входить в консоль (я хочу это, потому что я использую Heroku с Papertrails (дополнение для журналирования Heroku), а материал, записанный в консоль, будет отображаться в Papertrails, делая его фильтруемым и все хорошие функции Papertrail.)
В настройках я сначала пробовал следующее:
LOGGING = {
'handlers' = {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'mysite.log',
'formatter': 'verbose'
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
(...)
'loggers'={
(...)
'page_processors': {
'handlers': ['console','file'],
'level': 'DEBUG',
}
}
(...)
}
согласно странице регистрации в Django (для тех, кто не использует Mezzanine, page_processors - это то, что Mezzanine запускает всякий раз, когда вы открываете страницу; вы можете думать о них как о представлениях Django, но они выполняют только контекст, а не рендеринг).
На page_processors.py у меня есть
import logging
logger = logging.getLogger(__name__)
@process_for(MyPage):
def myfunc(request, Page):
logger.info('page_processor logging test')
print 'my page_processor print'
(...)
Когда я обновляю страницу, я не вижу регистратор, но вижу печать И журнал в файл:
[02/Mar/2014 23:07:10] INFO [myApp.page_processors:13] page_progessor logging test
и поэтому я знаю, что логика работает. Немного погуглив, я обнаружил эту и эту страницу, которая решает именно эту проблему. Он говорит, что по умолчанию logging.StreamHandler регистрирует в STDERR. Если мы хотим войти в STDOUT, вы должны добавить ключевое слово аргумент "stream" в конструкцию logging.StreamHandler, и таким образом настроить обработчик следующим образом:
'handlers':{
(...)
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout
},
}
Оказывается, это все еще не работает, и я не получаю никакой ошибки или чего-то еще, и я все еще вижу печать и журнал файлов. Только не консольный логгер.
Что происходит?
ОБНОВЛЕНИЕ: Я пробовал это, не имеет значения.